格斗游戏,每个游戏角色的姓名,血量,都不相同,在选定人物的时候(new对象的时候),这些信息就应该被确定下来。
目录:
GeDoTest类是测试类
Role类:
package test02_gedo;
import java.util.Random;
public class Role {
//定义成员变量名字、血量
private String name;
private int blood;
//attack 攻击描述:
String[] attacks_desc={
"%s使出了一招【背心钉】,转到对方的身后,一掌向%s背心的灵台穴拍去。",
"%s使出了一招【游空探爪】,飞起身形自半空中变掌为抓锁向%s。",
"%s大喝一声,身形下伏,一招【劈雷坠地】,捶向%s双腿。",
"%s运气于掌,一瞬间掌心变得血红,一式【掌心雷】,推向%s。",
"%s阴手翻起阳手跟进,一招【没遮拦】,结结实实的捶向%s。",
"%s上步抢身,招中套招,一招【劈挂连环】,连环攻向%s。"
};
//injured 受伤描述:
String[] injureds_desc={
"结果%s退了半步,毫发无损",
"结果给%s造成一处瘀伤",
"结果一击命中,%s痛得弯下腰",
"结果%s痛苦地闷哼了一声,显然受了点内伤",
"结果%s摇摇晃晃,一跤摔倒在地",
"结果%s脸色一下变得惨白,连退了好几步",
"结果『轰』的一声,%s口中鲜血狂喷而出",
"结果%s一声惨叫,像滩软泥般塌了下去"
};
public Role() {
}
public Role(String name, int blood) {
this.name = name;
this.blood = blood;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getBlood() {
return blood;
}
public void setBlood(int blood) {
this.blood = blood;
}
//格斗
public void gedo(Role role){
Random r=new Random();
//随机生成attacks_desc的索引
int number=r.nextInt(attacks_desc.length);
//定义攻击描述
String kunfu=attacks_desc[number];
//souf中%s是占位,需要填充
System.out.printf(kunfu,this.getName(),role.getName());
//换行
System.out.println();
//随机生成1-20的伤害
int hurt=r.nextInt(20)+1;
//定义剩余血量
int reblood=role.getBlood()-hurt;
//判断,如果剩余血量小于0(负数),就变为0
reblood=reblood<0?0:reblood;
//修改剩余血量
role.setBlood(reblood);
//判断,被攻击者的状态
if(reblood>90){
System.out.printf(injureds_desc[0],role.getName());
}else if(reblood>80){
System.out.printf(injureds_desc[1],role.getName());
}else if(reblood>70){
System.out.printf(injureds_desc[2],role.getName());
}else if(reblood>60){
System.out.printf(injureds_desc[3],role.getName());
}else if(reblood>40){
System.out.printf(injureds_desc[4],role.getName());
}else if(reblood>20){
System.out.printf(injureds_desc[5],role.getName());
}else if(reblood>10){
System.out.printf(injureds_desc[6],role.getName());
}else {
System.out.printf(injureds_desc[7],role.getName());
}
System.out.println();
}
}
GeDoTest类
package test02_gedo;
public class GeDoTest {
public static void main(String[] args) {
//文字格斗游戏
//创建对象
Role r1=new Role("人鱼姬",100);
Role r2=new Role("呼噜哥",100);
System.out.println(r1.getName()+"PK"+r2.getName());
while (true){
//r1攻击r2
r1.gedo(r2);
//如果r2剩余血量为0,r1 KO了 r2
if(r2.getBlood()==0){
System.out.println(r1.getName()+"KO了"+r2.getName());
//结束循环
break;
}
//r2攻击r1
r2.gedo(r1);
if(r1.getBlood()==0){
System.out.println(r2.getName()+"KO了"+r1.getName());
break;
}
}
}
}
运行结果:
人鱼姬PK呼噜哥
人鱼姬大喝一声,身形下伏,一招【劈雷坠地】,捶向呼噜哥双腿。
结果给呼噜哥造成一处瘀伤
呼噜哥使出了一招【游空探爪】,飞起身形自半空中变掌为抓锁向人鱼姬。
结果人鱼姬退了半步,毫发无损
人鱼姬使出了一招【背心钉】,转到对方的身后,一掌向呼噜哥背心的灵台穴拍去。
结果一击命中,呼噜哥痛得弯下腰
呼噜哥使出了一招【背心钉】,转到对方的身后,一掌向人鱼姬背心的灵台穴拍去。
结果人鱼姬退了半步,毫发无损
人鱼姬使出了一招【游空探爪】,飞起身形自半空中变掌为抓锁向呼噜哥。
结果呼噜哥摇摇晃晃,一跤摔倒在地
呼噜哥阴手翻起阳手跟进,一招【没遮拦】,结结实实的捶向人鱼姬。
结果给人鱼姬造成一处瘀伤
人鱼姬上步抢身,招中套招,一招【劈挂连环】,连环攻向呼噜哥。
结果呼噜哥脸色一下变得惨白,连退了好几步
呼噜哥使出了一招【背心钉】,转到对方的身后,一掌向人鱼姬背心的灵台穴拍去。
结果人鱼姬痛苦地闷哼了一声,显然受了点内伤
人鱼姬上步抢身,招中套招,一招【劈挂连环】,连环攻向呼噜哥。
结果呼噜哥脸色一下变得惨白,连退了好几步
呼噜哥使出了一招【游空探爪】,飞起身形自半空中变掌为抓锁向人鱼姬。
结果人鱼姬摇摇晃晃,一跤摔倒在地
人鱼姬大喝一声,身形下伏,一招【劈雷坠地】,捶向呼噜哥双腿。
结果呼噜哥脸色一下变得惨白,连退了好几步
呼噜哥大喝一声,身形下伏,一招【劈雷坠地】,捶向人鱼姬双腿。
结果人鱼姬摇摇晃晃,一跤摔倒在地
人鱼姬运气于掌,一瞬间掌心变得血红,一式【掌心雷】,推向呼噜哥。
结果『轰』的一声,呼噜哥口中鲜血狂喷而出
呼噜哥阴手翻起阳手跟进,一招【没遮拦】,结结实实的捶向人鱼姬。
结果人鱼姬摇摇晃晃,一跤摔倒在地
人鱼姬大喝一声,身形下伏,一招【劈雷坠地】,捶向呼噜哥双腿。
结果『轰』的一声,呼噜哥口中鲜血狂喷而出
呼噜哥使出了一招【背心钉】,转到对方的身后,一掌向人鱼姬背心的灵台穴拍去。
结果人鱼姬脸色一下变得惨白,连退了好几步
人鱼姬阴手翻起阳手跟进,一招【没遮拦】,结结实实的捶向呼噜哥。
结果『轰』的一声,呼噜哥口中鲜血狂喷而出
呼噜哥使出了一招【背心钉】,转到对方的身后,一掌向人鱼姬背心的灵台穴拍去。
结果人鱼姬脸色一下变得惨白,连退了好几步
人鱼姬运气于掌,一瞬间掌心变得血红,一式【掌心雷】,推向呼噜哥。
结果呼噜哥一声惨叫,像滩软泥般塌了下去
呼噜哥使出了一招【背心钉】,转到对方的身后,一掌向人鱼姬背心的灵台穴拍去。
结果『轰』的一声,人鱼姬口中鲜血狂喷而出
人鱼姬运气于掌,一瞬间掌心变得血红,一式【掌心雷】,推向呼噜哥。
结果呼噜哥一声惨叫,像滩软泥般塌了下去
人鱼姬KO了呼噜哥