我正在尝试使用JavaScript中的简单游戏来循环播放' hits'龙上直到龙被杀。
游戏运行良好,但是如果结果是未命中,即youHit = 0
则脚本陷入无限循环。我知道无限循环是由slaying = true
的最终else语句引起的(如果为false则游戏停止并且脚本必须再次运行)。我的问题是如何在没有陷入无限循环的情况下循环未命中和命中。
var slaying = true
var youHit = Math.floor(Math.random() * 2)
var damageThisRound = Math.floor(Math.random() * 5 + 1)
var totalDamage = 0
var health = 4
while(slaying) {
if (youHit) {
totalDamage += damageThisRound
console.log("You hit for " + totalDamage + " damage");
if (health <= 0) {
console.log('You slayed the dragon!')
slaying = false;
} else {
health -= totalDamage
if (health <= 0) {
slaying = false;
console.log('You slayed the dragon!')
}
else {
slaying = true;
}
}
} else {
console.log("You missed!");
slaying = true;
}
console.log('Health: ' + health)
}
答案 0 :(得分:1)
您不会重新计算循环内的命中/未命中布尔值。所以你要么总是命中,要么总是错过。如果你总是想念,这会导致无限循环。
将var youHit = . . .
移至while (slaying)
圈。