【发布时间】:2017-02-10 22:36:05
【问题描述】:
所以我创建了一个简单的基于文本的游戏,但我的循环有问题。所以我的角色与同一个敌人进行了 3 场战斗,但战斗直到一个角色死亡才结束。使用我当前的代码,它只循环第一场战斗,但将战斗 2 和 3 留空。 玩家的生命值从一场战斗转移到另一场战斗,但敌人的生命值在随后的每场战斗中重置为 25。 以及如何让我的循环在角色死亡时立即停止? 我究竟做错了什么?
Scanner keyboard = new Scanner(System.in);
Random rand = new Random();
int characterHP = 0, characterStrength = 0, weaponMin = 0, weaponMax = 0;
int enemyHP = 0, enemyStrength = 0, enemyWeaponMin = 0, enemyWeaponMax = 0;
boolean running = true, characterHasntDied = true, enemyHasntDied = true;
int choice;
String characterChoice = null;
String enemyChoice = null;
int ATK = 0, enemyATK = 0;
for (int i = 1; i <= 3; i++) {
ATK = rand.nextInt((weaponMax - weaponMin) + 1) + weaponMin;
enemyATK = rand.nextInt((enemyWeaponMax - enemyWeaponMin) + 1) + enemyWeaponMin;
int valueOfAttack = (ATK + characterStrength);
int enemyValueOfAttack = (enemyATK + enemyStrength);
enemyHP -= valueOfAttack;
characterHP -= enemyValueOfAttack;
if (enemyHP < 1) {
characterHasntDied = false;
System.out.println(characterChoice + " has defeated Goblin " + i);
break;
} else if (characterHP < 1) {
characterHasntDied = false;
System.out.println(characterChoice + " is defeated in battle!");
break;
}
}
}
【问题讨论】:
-
似乎有些代码没有显示,例如。
characterHasntDied在哪里定义?您能否在运行代码时包含它和实际输出。 -
你会在战斗结束后重置数值(hp、characterHasntDied 等)吗?请提供所有重要的代码,请参阅stackoverflow.com/help/mcve。例如,删除代码中不改变值的部分(如 System.out.printlns),以便您的代码更易于理解。
标签: java if-statement for-loop while-loop