简单游戏的无限循环

时间:2015-10-25 18:10:15

标签: javascript

我正在尝试使用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)

}

1 个答案:

答案 0 :(得分:1)

您不会重新计算循环内的命中/未命中布尔值。所以你要么总是命中,要么总是错过。如果你总是想念,这会导致无限循环。

var youHit = . . .移至while (slaying)圈。