ثلاث شخصيات بطولية تشارك في PK
يتمتع كل بطل بالسمات التالية: الصحة (يسقط البطل عندما يكون 0)، قوة الهجوم (يتم خصم نقاط صحة الخصم لكل هجوم)، وفاصل الهجوم (يجب عليك انتظار الفاصل الزمني بعد كل هجوم قبل المتابعة) الهجوم، يجب عليك أيضًا انتظار الفاصل الزمني قبل الهجوم للمرة الأولى)
بالإضافة إلى ذلك، يتمتع كل بطل بمهارتين: مهارات الهجوم والمهارات الدفاعية. تتمتع مهارات الهجوم باحتمالية معينة للتنشيط عند مهاجمة الخصم، والمهارات الدفاعية لها احتمالية معينة للتنشيط عند مهاجمتها من قبل الخصم على النحو التالي
بي ام:
الصحة 650، قوة الهجوم 40، فترة الهجوم 1.5 ثانية
مهارة الهجوم (قطع القفز): هناك احتمال بنسبة 30% لإحداث ضرر مضاعف في كل مرة تهاجم فيها. مهارة الدفاع (الارتداد): في كل مرة تتعرض فيها للهجوم، هناك فرصة بنسبة 30% لعكس الضرر الذي لحق بالخصم. على سبيل المثال، إذا تعرضت للهجوم، تبلغ قوة هجوم الخصم 30، وسيتم خصم 30 نقطة من صحتنا، وإذا تم تنشيط المهارة، فسيخصم الخصم أيضًا 30 نقطة من الصحة، ولا يمكن ارتداد الضرر إلا مرة واحدة ( لن يكون هناك انتعاش مستمر عندما يقوم اثنان من BMs بضرب بعضهما البعض).
DH: صحة 600، قوة الهجوم 30، فاصل الهجوم 1 ثانية
مهارة الهجوم (مص الدماء): في كل مرة تهاجم فيها هناك فرصة 30% لتحويل الضرر المسبب إلى صحتك (إحداث ضرر للشخص المهاجم وتحويل ضرر الهجوم إلى صحتك)، لكن لا يمكن أن تتجاوز الحد الأعلى مثلاً عندما نهاجم سنخصم 30 نقطة من صحة الخصم، وفي نفس الوقت نضيف لأنفسنا 30 نقطة من الصحة (المراوغة): في كل مرة يتم الهجوم علينا هناك 30%. فرصة لتفادي وعدم التعرض للأذى.
عضو الكنيست:
الصحة 700، قوة الهجوم 50، فترة الهجوم 2.5 ثانية
مهارة الهجوم (الضربة القوية): في كل مرة تهاجم فيها، هناك احتمال بنسبة 30% لإصابة الخصم بالذهول لمدة 3 ثوانٍ (سيتم صعق الخصم لمدة 3 ثوانٍ بعد تلقي الضرر). لا يمكن لبطل الخصم الهجوم خلال هذه الفترة الصاعقة، ولكن لا يمكن التغلب عليها إلا، ولا يمكن بدء المهارات الدفاعية عند التعرض للهجوم، وبعد انتهاء الصعق، يجب على بطل الخصم انتظار فترة الهجوم مرة أخرى، ولا ينقضي وقت الصعق. يمكن فرضها إذا كان الخصم مذهولًا بالفعل وقمنا ببدء مهارة هجومية، فسيبدأ وقت صعق الخصم في العد مرة أخرى. مهارة الدفاع (الله): هناك فرصة بنسبة 60% للدفاع عن نصف الضرر في كل مرة نتعرض فيها للهجوم على سبيل المثال، إذا تعرضنا للهجوم، فإن قوة الهجوم ستكون 40. إذا تم تفعيل المهارة، سيتم خصم 20 نقطة فقط من صحتنا.
1. بعد بدء تشغيل البرنامج، قم بمراقبة إدخال وحدة التحكم
2. أدخل أي اسمين للبطل (مفصولين بفواصل) لبدء PK، التنسيق: BM، DH
3. يقوم النظام بإخراج عملية PK التفصيلية حتى يفوز أحد الطرفين ويكون التنسيق كما يلي:
يهاجم BM DH، BM ينشط المهارات الهجومية، DH لا ينشط المهارات الدفاعية، BM: 350->350، DH: 280->200
....
بي ام يفوز
package com.lxi; import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.Random; // الفئة الأساسية المكونة من ثلاثة أحرف class Person { // القيمة الصحية double ColdTime; وقت التبريد int waitTime; // وقت الصعق int Fight; // قوة الهجوم int ChanceHit; // احتمال بدء المهارات النشطة int ChanceDefense; p); // مهارات الهجوم int Defense(Person p); // مهارات الدفاع، إرجاع عدد نقاط الضرر} class DH Extends Person { public DH() { val = 600; Fight = 30; = 3 ; // يشير إلى فرصة احتمالية تبلغ 30% = 3; waitTime = 0 } Random rand = new Random(); // علامة تنشيط المهارات النشطة boolean DefenseFlag = false; // علامة تنشيط المهارات الدفاعية public void hit(Person p) { if (rand.nextInt(10) <ChanceHit) { // تنشيط المهارات النشطة int Hur = p.defense ( this); p.val = p.val - تؤذي; System.exit(0); } val = val + Hur; if (val > 600) val = 600; hitFlag = true; ( this); p.val = p.val - تؤذي; System.exit(0); } } System.out.println(this.getClass().getSimpleName() + "هجوم" + p.getClass().getSimpleName() + ""، + this.getClass().getSimpleName () + (this.hitFlag ? "تم إطلاق مهارة الهجوم": "لم يتم إطلاق مهارة الهجوم") + p.getClass().getSimpleName() + (this.defenseFlag ? "تم تنشيط المهارات الدفاعية" : "لم يتم تنشيط المهارات الدفاعية") + this.getClass().getSimpleName() + ": + this.val + ""، + p.getClass().getSimpleName() + ": + p.val); hitFlag = false; // DefenseFlag = false; true; // تم تفعيل المهارات الدفاعية للعلامة return 0; } else { return p.fight;
class BM Extends Person { public BM() { val = 650; القتال = 40; ChanceDefense = 3; waitTime = 0; 40; // قوة الهجوم، نفس قيمة القتال boolean hitFlag = false; hit(Person p) { if (rand.nextInt(10) <ChanceHit) { Fight = Fight * 2; val - تؤذي القتال = درجة الحرارة // الرجوع إلى الهجوم الفردي if (p.val <= 0) { System.out.println(this.getClass().getSimpleName() + "Win!"); System.exit(0); } System.out.println(this.getClass().getSimpleName() + "Attack" + p.getClass().getSimpleName() + ""، + this. getClass().getSimpleName() + (this.hitFlag ? "تم إطلاق مهارة الهجوم": "لم يتم إطلاق مهارة الهجوم") + p.getClass().getSimpleName() + (this.defenseFlag ? "تنشيط مهارات الدفاع" : "لم يتم تنشيط مهارات الدفاع") + this.getClass().getSimpleName() + ": " + this.val + ""، + p.getClass().getSimpleName() + ": " + p.val); hitFlag = false; DefenseFlag = false; } public int Defense(Person p) { if (rand.nextInt(10) <ChanceDefense) { if (count != 0) { p.val = p.val - p.fight; count++; true; if (p.val <= 0) { System.out.println(this.getClass().getSimpleName() + "Win!") ; System.exit(0); } } } return p.fight }} class MK Extends Person { public MK() { val = ColdTime = 50; فرصة الدفاع = 6؛ فرصة الانتظار = 0؛ } boolean hitFlag = false; { p.waitTime = 3; // صعق الخصم لمدة 3 ثوانٍ hitFlag = true } int Hur = p.defense(this); p.val = p.val - تؤذي؛ if (p.val <= 0) { System.out.println(this.getClass().getSimpleName() + "Win!"); System.out.println(this.getClass().getSimpleName() + "هجوم" + p.getClass().getSimpleName() + ""، + this.getClass().getSimpleName() + (this.hitFlag ? "تم إطلاق مهارات الهجوم" : "لم يتم إطلاق مهارات الهجوم") + p.getClass().getSimpleName() + (this.defenseFlag ? "تم إطلاق مهارات الدفاع": "لم يتم إطلاق مهارات الدفاع") + this. getClass().getSimpleName() + ": " + this.val + ""، + p.getClass().getSimpleName() + ": " + p.val); false } public int Defense(Person p) { if (rand.nextInt(10) <ChanceDefense) { DefenseFlag = true; return p.fight / 2; } }
public class Rpg { @SuppressWarnings("unchecked") public static void main(String[] args) throws Exception { System.out.println("أدخل حرفين هنا لـ PK، مفصولتين بفواصل إنجليزية: [BM، DH، MK] "); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); Class<Person> c1; Class<Person> c2; حاول { String temp = br.readLine(); String[] str = temp.split("،); if (str. length != 2) { throw new Exception("تنسيق الإدخال خاطئ، اضغط على PK الافتراضي"); } c1 = (Class<Person>) Class.forName("com.lxi." + str[0].toUpperCase()); (Class<Person>) Class.forName("com.lxi." + str[1].toUpperCase()); } Catch (Exception e) { // TODO Auto-generated Catch block c1 = (Class<Person>) Class.forName("com" .lxi.BM"); c2 = (Class<Person>) Class.forName("com.lxi.DH"); } حاول { Person p1 = c1.newInstance(); Person p2 = c2.newInstance(); long time = System.currentTimeMillis(); long nextTime1 = (long) (time + p1.coldTime*1000); // long nextTime2 = (long) (time + p2.coldTime*1000); / وقت بدء الهجوم System.out.println("---تبدأ اللعبة---"); while (true) { long currenTime = System.currentTimeMillis(); (nextTime1 < currenTime) { // إطلاق الهجوم عند انتهاء الوقت p1.hit(p2); nextTime1 += p1.coldTime*1000 + p1.waitTime*1000; // وقت الهجوم التالي = وقت التبريد + وقت الذهول p1 .waitTime = 0 // في نهاية الجولة، أعد ضبط وقت الذهول إلى 0 } if (nextTime2 < currenTime) { p2.hit(p1); p2.coldTime*1000 + p2.waitTime*1000; p2.waitTime = 0 } } } Catch (ClassCastException e) { // كتلة الصيد التي تم إنشاؤها تلقائيًا لـ TODO e.printStackTrace(); كتلة التقاط TODO التي تم إنشاؤها تلقائيًا e.printStackTrace(); } Catch (IllegalAccessException e) { // TODO كتلة التقاط تم إنشاؤها تلقائيًا e.printStackTrace() } Catch (Exception e) { e.printStackTrace();
ما ورد أعلاه هو محتوى هذه المقالة بالكامل، وآمل أن تنال إعجابكم جميعًا.