1 问题
实现两个角色的相互回合制格斗,每次攻击伤害随机,谁的血量先为0谁的角色先倒下。
2 方法
两个角色明显是实例对象,所以这里要先创建一个关于角色的role标准JavaBean类;
关于角色的行为则需要在role对象里面写一个attack攻击的方法,引入Random类,生成每次的随机攻击伤害,这里要注意是谁攻击谁,而谁受影响扣血,并且要对血量小于0以后进行判断,血量不能为负数;
最后再Test类中套用循环实现回合制的执行,创建类对象,调用方法即可运行;
通过实验、实践等证明提出的方法是有效的,是能够解决开头提出的问题。
代码清单 1
package Test.Test_Class.Test01; import java.util.Random; public class Role { private String name; private int blood; public Role() { } public Role(String name, int blood) { this.name = name; this.blood = blood; } /** * 获取 * * @return name */ public String getName() { return name; } /** * 设置 * * @param name */ public void setName(String name) { this.name = name; } /** * 获取 * * @return blood */ public int getBlood() { return blood; } /** * 设置 * * @param blood */ public void setBlood(int blood) { this.blood = blood; } //攻击方法 r1 攻击 r2 public void attack(Role role) { Random r = new Random(); int hurt = r.nextInt(20) + 1; //造成伤害 int remainblood = role.getBlood() - hurt; remainblood = remainblood < 0 ? 0 : remainblood; role.setBlood(remainblood); System.out.println(this.name + "起拳头打了" + role.name + "一下,造成" + hurt + "点伤害,"+ role.getName()+"剩余" + remainblood + "血量"); } } package Test.Test_Class.Test01; //文字格斗游戏 public class GameTest { public static void main(String[] args) { Role r1 = new Role("蒲文龙",100); Role r2 = new Role("李鑫",100); while (true){ r1.attack(r2); if (r2.getBlood() == 0){ System.out.println(r1.getName()+"k.o了"+r2.getName()); break; } r2.attack(r1); if (r1.getBlood() == 0){ System.out.println(r2.getName()+"k.o了"+r1.getName()); break; } } } } |
3 结语
针对编写简单的文字游戏问题,提出引入Random类和创建类的方法,通过实验,证明该方法是有效的,未来可以运用数组添加对象的招式名,受击描述,实现升级。