求一个简单的RPG游戏代码,用JAva编写。
进口?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
}
}
}