求一个简单的RPG游戏代码,用JAva编写。

包裹?com.lxi

进口?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

}

}

}