進口?Java . io . buffered reader;
進口?Java . io . inputstreamreader;
公共?班級?Rpg?{
@SuppressWarnings("未選中")
公共?靜電?作廢?main(String[]?args)?摔投?例外?{
System.out.println("在此輸入兩個字符進行PK,用英文逗號分隔:?[BM,DH,MK]”;
BufferedReader?br?=?新的?BufferedReader(新?InputStreamReader(system . in));
Class & ltPerson & gt?c 1;
Class & ltPerson & gt?C2;
試試?{
字符串?臨時工?=?br . readline();
String[]?str?=?temp.split(",");
如果?(str.length?!=?2)?{
扔?新的?異常(“輸入格式錯誤,按默認PK”);
}
c1?=?(Class & ltPerson & gt)?Class.forName("com.lxi。"
+?str[0]。toupper case());
c2?=?(Class & ltPerson & gt)?Class.forName("com.lxi。"
+?str[1]。toupper case());
}?接住?(例外?e)?{
//?托多?自動生成?接住?街區
c1?=?(Class & ltPerson & gt)?class . forname(" com . lxi . BM ");
c2?=?(Class & ltPerson & gt)?class . forname(" com . lxi . DH ");
}
試試?{
人?p1?=?c 1 . new instance();
人?p2?=?C2 . new instance();
龍?時間?=?system . current time millis();
龍?nextTime1?=?(龍)?(時間?+?p 1 . cold time * 1000);?//
龍?下次2?=?(龍)?(時間?+?p2 . cold time * 1000);?//攻擊時間
系統。out . println("-遊戲開始-");
什麽時候?(真)?{
龍?當前時間?=?system . current time millis();
如果?(nextTime1?& lt?currenTime)?{?//時間到了就攻擊
p 1 . hit(p2);
nextTime1?+=?p1.coldTime*1000?+?p 1 . wait time * 1000;?//下次攻擊時間=冷卻時間+昏迷時間
p1 .等待時間?=?0;?//在回合結束時,重置昏迷時間為0。
}
如果?(nextTime2?& lt?currenTime)?{
p2 . hit(p 1);
下次2?+=?p2.coldTime*1000?+?p2 . wait time * 1000;
p2.waitTime?=?0;
}
}
}?接住?(ClassCastException?e)?{
//?托多?自動生成?接住?街區
e . printstacktrace();
}?接住?(InstantiationException?e)?{
//?托多?自動生成?接住?街區
e . printstacktrace();
}?接住?(IllegalAccessException?e)?{
//?托多?自動生成?接住?街區
e . printstacktrace();
}?接住?(例外?e)?{
e . printstacktrace();
}
}
}包?com.lxi
進口?Java . util . random;
班級?BM?延伸?人?{
公共?BM()?{
瓦爾。=?650;
酷暑嗎?=?1.5;
打架?=?40;
偶然事件。=?3;
機會辯護?=?3;
等待時間?=?0;
}
int?數數?=?0;//防禦技能發動的次數
int?臨時工?=?40;//攻擊力,數值和戰鬥壹樣
布爾?hitFlag?=?假的;
布爾?defenseFlag?=?假的;
隨機?蘭德?=?新的?random();
公共?作廢?打(人?p)?{
如果?(rand.nextInt(10)?& lt?chanceHit)?{
打架?=?打架?*?2;//發動雙重攻擊
hitFlag?=?真實;
}
int?受傷了?=?p.defense(本);
帕瓦爾?=?帕瓦爾?-?傷害;
打架?=?溫度;?//恢復到單壹攻擊
如果?(p.val?& lt=?0)?{
system . out . println(this . getclass()。getSimpleName()?+?“贏了!”);
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()?+?":"?+?這個瓦爾。+?","
+?p.getClass()。getSimpleName()?+?":"?+?p . val);
hitFlag?=?假的;
defenseFlag?=?假的;
}
公共?int?防禦(人?p)?{
如果?(rand.nextInt(10)?& lt?chanceDefense)?{
如果?(算嗎?!=?0)?{
帕瓦爾?=?帕瓦爾?-?p.fight
count++;
defenseFlag?=?真實;
如果?(p.val?& lt=?0)?{
system . out . println(this . getclass()。getSimpleName()?+?“贏了!”);
system . exit(0);
}
}
}
回歸?p.fight
}
}
班級?MK?延伸?人?{
公共?MK()?{
瓦爾。=?700;
酷暑嗎?=?2.5;
打架?=?50;
機會辯護?=?6;
偶然事件。=?3;
等待時間?=?0;
}
布爾?hitFlag?=?假的;
布爾?defenseFlag?=?假的;
隨機?蘭德?=?新的?random();
公共?作廢?打(人?p)?{
如果?(rand.nextInt(10)?& lt?chanceHit)?{
p .等待時間?=?3;//打暈對方3s。
hitFlag?=?真實;
}
int?受傷了?=?p.defense(本);
帕瓦爾?=?帕瓦爾?-?傷害;
如果?(p.val?& lt=?0)?{
system . out . println(this . getclass()。getSimpleName()?+?“贏了!”);
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()?+?":"?+?這個瓦爾。+?","
+?p.getClass()。getSimpleName()?+?":"?+?p . val);
hitFlag?=?假的;
defenseFlag?=?假的;
}
公共?int?防禦(人?p)?{
如果?(rand.nextInt(10)?& lt?chanceDefense)?{
defenseFlag?=?真實;
回歸?p.fight?/?2;//防禦技能激活,傷害減半。
}
回歸?p.fight
}
}包?com.lxi
進口?Java . io . buffered reader;
進口?Java . io . inputstreamreader;
進口?Java . util . random;
//三個字符的基類
抽象?班級?人?{
int?val?//健康值
雙倍?coldTime?//冷卻時間
int?等待時間;//眩暈時間
int?打架;?//攻擊力
int?偶然事件;?//啟動主動技能的概率
int?機會辯護;?//發動防禦技能的概率
抽象?作廢?打(人?p);//攻擊技巧
抽象?int?防禦(人?p);?//防守技能,返回所取點數。
}
班級?DH?延伸?人?{
公共?DH()?{
瓦爾。=?600;
酷暑嗎?=?1.0;
打架?=?30;
偶然事件。=?3;?//表示30%的概率。
機會辯護?=?3;
等待時間?=?0;
}
隨機?蘭德?=?新的?random();
布爾?hitFlag?=?假的;?//主動技能啟動的標識
布爾?defenseFlag?=?假的;?//防禦技能發射的標識
公共?作廢?打(人?p)?{
如果?(rand.nextInt(10)?& lt?chanceHit)?{?//啟動主動性技能
int?受傷了?=?p.defense(本);
帕瓦爾?=?帕瓦爾?-?傷害;
如果?(p.val?& lt=?0)?{
system . out . println(this . getclass()。getSimpleName()?+?“贏了!”);
system . exit(0);
}
瓦爾。=?瓦爾。+?傷害;
如果?(瓦爾?& gt?600)
瓦爾。=?600;
hitFlag?=?真實;?//標記主動技能已經開始。
}?不然呢?{?//進行正常攻擊
int?受傷了?=?p.defense(本);
帕瓦爾?=?帕瓦爾?-?傷害;
如果?(p.val?& lt=?0)?{
system . out . println(this . getclass()。getSimpleName()?+?“贏了!”);
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()?+?":"?+?這個瓦爾。+?","
+?p.getClass()。getSimpleName()?+?":"?+?p . val);
hitFlag?=?假的;?//
defenseFlag?=?假的;?//重置標簽,下次再使用。
}
公共?int?防禦(人?p)?{
如果?(rand.nextInt(10)?& lt?chanceDefense)?{
defenseFlag?=?真實;//標記防禦技能已經激活。
回歸?0;
}?不然呢?{
回歸?p.fight
}
}
}