目录
游戏设定
游戏的目的是扮演传说中的勇者,打倒妄图控制世界的龙王,顺道救出被掳走的公主。完成游戏。
游戏会随机存在四种操作:勇者攻击,恶龙攻击,勇者吃掉血药生命值恢复,勇者吃掉毒药攻击力提升,如果勇者在限定的回合内击败恶龙且不被恶龙击败,讨伐成功则可成功救出公主。讨伐失败则公主被恶龙掳走。
代码实现
DragonFightGame类
public class DragonFightGame {
public static final int MAX_ROUND = 10;
public static final int MAX_HP = 100;
public static final int MAX_ATTACK = 20;
public static final int HEAL_HP = 30;
public static final int INCREASE_ATTACK = 5;
public int round = 1;
public int dragonHp = MAX_HP;
public int heroHp = MAX_HP;
public int heroAttack = MAX_ATTACK;
public String dragonName;
public String heroName;
public DragonFightGame(String dragonName, String heroName) {
this.dragonName = dragonName;
this.heroName = heroName;
}
public synchronized void dragonAttack() {
if (round > MAX_ROUND) {
return;
}
int damage = (int) (Math.random() * MAX_ATTACK);
heroHp -= damage;
System.out.println(dragonName + "对" + heroName + "造成了" + damage + "点伤害");
if (heroHp <= 0) {
System.out.println(heroName + "被" + dragonName + "击败了");
return;
}
round++;
}
public synchronized void heroAttack() {
if (round > MAX_ROUND) {
return;
}
int damage = heroAttack;
dragonHp -= damage;
System.out.println(heroName + "对" + dragonName + "造成了" + damage + "点伤害");
if (dragonHp <= 0) {
System.out.println(dragonName + "被" + heroName + "击败了");
return;
}
round++;
}
public synchronized void useHeal() {
if (round > MAX_ROUND) {
return;
}
heroHp += HEAL_HP;
if (heroHp > MAX_HP) {
heroHp = MAX_HP;
}
System.out.println(heroName + "使用了恢复道具,恢复了" + HEAL_HP + "点生命值");
round++;
}
public synchronized void useAttackBoost() {
if (round > MAX_ROUND) {
return;
}
heroAttack += INCREASE_ATTACK;
System.out.println(heroName + "使用了攻击力提升道具,攻击力增加了" + INCREASE_ATTACK);
round++;
}
}
DragonFightGameDemo类
public class DragonFightGameDemo {
public static void main(String[] args) {
DragonFightGame game = new DragonFightGame("黑龙", "勇者");
DragonFightGameThread dragonThread = new DragonFightGameThread(game, "黑龙线程");
DragonFightGameThread heroThread = new DragonFightGameThread(game, "勇者线程");
dragonThread.start();
heroThread.start();
while (game.round <= DragonFightGame.MAX_ROUND && game.dragonHp > 0 && game.heroHp > 0) {
int action = (int) (Math.random() * 4);
switch (action) {
case 0:
game.dragonAttack();
break;
case 1:
game.heroAttack();
break;
case 2:
game.useHeal();
break;
case 3:
game.useAttackBoost();
break;
}
}
if(game.dragonHp<=0){
System.out.println();
System.out.println("勇者讨伐成功\n");
}
else{
System.out.println();
System.out.println("勇者讨伐失败\n");
}
}
}
DragonFightGameThread类
public class DragonFightGameThread extends Thread {
private DragonFightGame game;
private String name;
public DragonFightGameThread(DragonFightGame game, String name) {
this.game = game;
this.name = name;
}
@Override
public void run() {
while (game.round <= DragonFightGame.MAX_ROUND && game.dragonHp > 0 && game.heroHp > 0) {
int action = (int) (Math.random() * 4);
switch (action) {
case 0:
game.dragonAttack();
break;
case 1:
game.heroAttack();
break;
case 2:
game.useHeal();
break;
case 3:
game.useAttackBoost();
break;
}
}
System.out.println(name + "结束了游戏");
}
}
实机演示