简单的JavaScript if / else语句

时间:2015-07-14 20:41:25

标签: javascript if-statement

我正在学习Javascript。这是我的代码。这是一个用户与龙战斗的简单程序,但是我添加了一个额外的位,如果龙将用户的健康状况降低到0,则代码结束。但是,每当我运行此代码时,一旦龙开始降低用户的健康状况,就会发生这种情况。用户无法与龙进行交易。我做错了什么?

q

4 个答案:

答案 0 :(得分:0)

youHit只计算一次。因此,一旦龙对你的玩家造成伤害,它就会继续造成伤害。

您可以将计算包装在一个函数中,然后激活它们:

function fightDragon() {
    var userHealth = 5;
    var youHit = function() {
        return Math.floor(Math.random() * 2);
    };
    var damageThisRound = function() {
        return Math.floor(Math.random() * 5 + 1);
    }
    var totalDamage = 0;
    var dragonDamage = function() {
        return Math.floor(Math.random() * 2);
    }

    while (userHealth > 0) {
        var damage = youHit();
        if (damage) {
            console.log("You hit the dragon!");
            totalDamage += damageThisRound();
            console.log("Total damage dealt: " + totalDamage + "!");
            if (totalDamage >= 4) {
                console.log('You slew the dragon!');
                break;
            }
        } else {
            console.log('The dragon has dealt damage to you!');
            userHealth -= dragonDamage();
            console.log('Your health is now: ' + userHealth + '!')
        }
    }

}

答案 1 :(得分:0)

在您的龙码中添加一个数学回合:

var userHealth = 5;
var youHit = Math.floor(Math.random() * 2);
var damageThisRound = Math.floor(Math.random()*5 + 1);
var totalDamage = 0;
var dragonDamage = Math.floor(Math.random() * 2);
while (userHealth > 0) {
    if (youHit) {
        console.log("You hit the dragon!");
        totalDamage += damageThisRound;
        console.log("Total damage dealt: " + totalDamage + "!");
        if (totalDamage >= 4) {
            console.log("You slew the dragon!");
            userHealth = 0;
        }
        else {
            youHit = Math.floor(Math.random() * 2);
        }
    }
    else {
        console.log("The dragon has dealt damage to you!");
        userHealth -= dragonDamage;
        youHit = Math.floor(Math.random() * 2);
        dragonDamage = Math.floor(Math.random() * 2);
        console.log("Your health is now: " + userHealth + "!");
}
}

答案 2 :(得分:0)

在您的情况下,while循环外的所有变量只计算一次。

if (totalDamage >= 4) {
    userHealth = 0;
} else {
    youHit = Math.floor(Math.random() * 2);
}

上面的代码不会被执行,因为如果龙杀了你,游戏就结束了,循环结束了!

我还添加了这个:if(!! dragonDamage)条件来检查龙的生成伤害是否为零。另一种方法是将dragonDamage calculate =)

的结果加1
var userHealth = 5,
    totalDamage = 0;

while (userHealth > 0) {

    var youHit = Math.floor(Math.random() * 2),
        yourDamage = Math.floor(Math.random()*5 + 1),
        dragonDamage = Math.floor(Math.random() * 2);

    if (youHit) {
        console.log("You hit the dragon for " + yourDamage);
        totalDamage += yourDamage;

        if (totalDamage >= 4) {
            console.log("You slew the dragon!");
            userHealth = 0;
        }

    } else {
        if (!!dragonDamage) {
            console.log("The dragon has dealt damage to you!");
            userHealth -= dragonDamage;
            console.log("Your health is now: " + userHealth + "!");
        }
    }
}

答案 3 :(得分:0)

夫妻俩:

1)你想要为你重新计算一个随机值你龙已经对你造成伤害"部分:

youHit = Math.floor(Math.random() * 2);

否则,如果玩家的第一次击中为0,它将始终保持为0并且龙将赢得每次交换。

2)在"你击中龙"你要将玩家的生命值设置为0以退出while循环,即使玩家的生命值实际上不应为0.如果你打算显示玩家,这是一个问题&# 39;整场比赛的健康状况。我建议在while循环中添加一个标志:

var dragonSlain = false;
while (userHealth > 0 && !dragonSlain)
{
    ...
    if (totalDamage >= 4) {
        console.log("You slew the dragon!");
        //userHealth = 0;
        dragonSlain = true;
    }
    ...
}