练习 1: 文字版格斗游戏
最原始的写法:
Javabean 类:
import java.util.Random;
public class Role {
private int blood;
private String name;
public Role() {
}
public Role(int blood, String name) {
this.blood = blood;
this.name = name;
}
public int getBlood() {
return blood;
}
public void setBlood(int blood) {
this.blood = blood;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
// 攻击方法
// 调用方法的对象攻击该方法的形参
public void attack(Role role) {
// 计算造成的伤害
// 伤害是一个随机数, 范围是 [1, 20]
Random r = new Random();
// 得到造成的伤害
int hurt = r.nextInt(20) + 1;
// 获取被攻击者原来的血量
int currentBlood = role.getBlood();
// 计算被攻击者现在剩余的血量
int remainBlood = currentBlood - hurt;
// 当前血量低于造成的伤害时, 剩余血量将变为负数, 显然不可能, 此时将其赋值为 0
remainBlood = remainBlood > 0 ? remainBlood : 0;
// 将剩余血量赋值给被攻击的对象
role.setBlood(remainBlood);
// 打印攻击的过程
System.out.println(this.getName() + "打了" + role.getName() + "一下, 造成了 " + hurt + " 点伤害, " +
role.getName() + "还剩下 " + role.getBlood() + " 点血量.");
}
}
测试类:
public class GameTest {
public static void main(String[] args) {
// 创建一个角色
Role role1 = new Role(100, "乔峰");
// 创建另一个角色
Role role2 = new Role(100, "鸠摩智");
// 开始格斗, 回合制游戏
while (true) {
// role1 先攻击 role2
role1.attack(role2);
// 判断 role2 剩余血量, 从而决定循环是否继续
if (role2.getBlood() == 0) {
System.out.println(role1.getName() + "K.O. 了" + role2.getName());
break;
}
// 回合制游戏, 轮到 role2 攻击 role1 了
// role2 攻击 role1
role2.attack(role1);
// 判断 role1 剩余血量, 从而决定循环是否继续
if (role1.getBlood() == 0) {
System.out.println(role2.getName() + "K.O. 了" + role1.getName());
break;
}
}
}
}
执行结果:
乔峰打了鸠摩智一下, 造成了 17 点伤害, 鸠摩智还剩下 83 点血量.
鸠摩智打了乔峰一下, 造成了 9 点伤害, 乔峰还剩下 91 点血量.
乔峰打了鸠摩智一下, 造成了 6 点伤害, 鸠摩智还剩下 77 点血量.
鸠摩智打了乔峰一下, 造成了 1 点伤害, 乔峰还剩下 90 点血量.
乔峰打了鸠摩智一下, 造成了 11 点伤害, 鸠摩智还剩下 66 点血量.
鸠摩智打了乔峰一下, 造成了 18 点伤害, 乔峰还剩下 72 点血量.
乔峰打了鸠摩智一下, 造成了 4 点伤害, 鸠摩智还剩下 62 点血量.
鸠摩智打了乔峰一下, 造成了 7 点伤害, 乔峰还剩下 65 点血量.
乔峰打了鸠摩智一下, 造成了 12 点伤害, 鸠摩智还剩下 50 点血量.
鸠摩智打了乔峰一下, 造成了 4 点伤害, 乔峰还剩下 61 点血量.
乔峰打了鸠摩智一下, 造成了 19 点伤害, 鸠摩智还剩下 31 点血量.
鸠摩智打了乔峰一下, 造成了 13 点伤害, 乔峰还剩下 48 点血量.
乔峰打了鸠摩智一下, 造成了 7 点伤害, 鸠摩智还剩下 24 点血量.
鸠摩智打了乔峰一下, 造成了 20 点伤害, 乔峰还剩下 28 点血量.
乔峰打了鸠摩智一下, 造成了 19 点伤害, 鸠摩智还剩下 5 点血量.
鸠摩智打了乔峰一下, 造成了 1 点伤害, 乔峰还剩下 27 点血量.
乔峰打了鸠摩智一下, 造成了 8 点伤害, 鸠摩智还剩下 0 点血量.
乔峰K.O. 了鸠摩智
标签:鸠摩智,role1,训练,血量,乔峰,public,面向对象,伤害,综合
From: https://www.cnblogs.com/Chengkai730/p/18486954