做一个随机进行战斗的小游戏
思路:
创建两个角色小A和小B,角色按回合随机进行攻击和回复血量
每回合角色随机使用不同攻击技能,对对方造成1~20的伤害
每回合角色有1/5的概率对自己进行回复血量,一次恢复1~15
当一方血量为0时战斗结束
可以改变人物姓名和初始血量
import java.util.Random;
public class Role {
private String name;
private int blood;
private String jineng_out;
private String jineng_in;
String[] jn_o = {"%s使出一记火箭脑门子锤,撞在%s肚子上",
"%s大喝一声少侠饶命,趁%s骂'你犯什么病'的间隙一个扫堂腿撂倒了对手",
"%s使出一记话疗,%s感到一条强力的道德枷锁绑住了自己",
"%s唱了一首歌,%s吐了出来",
"%s以迅雷不及掩耳盗铃之响叮当之势抽了%s一个大逼兜"};
String[] jn_i = {"%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 String getJn_o() {
return jineng_out;
}
public String getJn_i() {
return jineng_in;
}
//回血
public void reBlood(Role role) {
int reblood = this.getBlood();
Random re = new Random();
int nai = re.nextInt(15)+1;//随机恢复1~15滴血
Random hx = new Random();
int hf = hx.nextInt(4)+1;//有1/5的概率进行回复
if(hf == 1) {
if(reblood < 50) {
System.out.print(this.getName()+"趁"+role.getName()+"不备,吞下两颗大白兔奶糖,恢复了"+nai+"点血,");
reblood = reblood + nai;
reblood = reblood > 50 ? 50 :reblood;
this.setBlood(reblood);
System.out.println(this.getName()+"的血量变成了"+this.getBlood());
}
}
}
//攻击
public void attack(Role role) {
//伤害值
Random h = new Random();
int hurt = h.nextInt(20)+1;
//剩余血量
int remainblood = role.getBlood()-hurt;
remainblood = remainblood < 0 ? 0 : remainblood;
role.setBlood(remainblood);
if(remainblood >= 40) jineng_in = jn_i[0];
else if(remainblood >= 30) jineng_in = jn_i[1];
else if(remainblood >= 15) jineng_in = jn_i[2];
else if(remainblood > 0) jineng_in = jn_i[3];
else jineng_in = jn_i[4];
//放技能
Random jn = new Random();
int n = jn.nextInt(jn_o.length);
System.out.printf(jn_o[n],this.getName(),role.getName());
System.out.print(",造成了"+hurt+"点伤害");
System.out.print(",");
System.out.printf(jineng_in, role.getName());
System.out.print(role.getName()+"还剩下"+role.getBlood()+"点血");
System.out.println();
}
public static void main(String[] args) {
System.out.println("比赛开始了");
System.out.println();
Role s = new Role("小A",50);
Role g = new Role("小B",50);
while(true) {
s.reBlood(g);
s.attack(g);
System.out.println();
if(g.getBlood() == 0) {
System.out.println(g.getName()+"寄了");
System.out.println();
break;
}
g.reBlood(s);
g.attack(s);
System.out.println();
if(s.getBlood() == 0) {
System.out.println(s.getName()+"寄了");
System.out.println();
break;
}
}
}
}
运行结果随机,下面展示几个结果
总结:
其中有几处可以改进的地方,比如受到攻击的一方状态是根据剩余血量判断的,但是因为我偷懒了,所以直接按人物初始血量为50写了,设置其他初始血量会让结果看起来不太聪明,大家可以自行改进
改变代码里角色的名称拿来玩一玩还是挺有趣的(因为太懒,没有把角色名称做成外部输入)