猜一个数字游戏,得分计数器给出不正确的结果

时间:2014-02-07 16:23:43

标签: javascript jquery html

我正在使用Javascript进行简单的1 - 10猜数字游戏 它可以在这里查看Guessing game

为了得分,我有一个var score = 4,每当猜测的数字(小于5的for循环)不正确时,它会递减。我+=var tally并显示tally作为分数。
我的问题是score总是等于0,因此没有添加任何东西来计算,我正在努力寻找解决方案。
我的javascript是:

var tally;
function play() {

    var compNum = (Math.random() * 10).toFixed(0);
    var score = 4;
    for (var i = 0; i < 4; i++) {

        if (i == 0) {
            var userNum = prompt("Enter a number between 1 and 10");
        } else {
            if (userNum < compNum) {
                userNum = prompt("Guess higher, you have " + (4 - i) + " turns left ", userNum);
            } else if (userNum > compNum) {
                userNum = prompt("Guess lower you have " + (4 - i) + " turns left ", userNum);
            }
        }
        score--;

    }

    tally += score;
    $("#score").html("score: " + tally);


    if (i >= 3 && userNum != compNum) {
        var again = confirm("Sorry you lost. The number was: " + compNum + " Play again?");
    } else if (userNum == compNum) {
        again = confirm("Well done! play again?");
        i <= 5;
    }
    if (again) {
        play();
    }
    if (userNum == "") {
        i <= 5;
    }


}

HTML:

<button onclick="play()">PLAY</button>
<div id="score"></div>

非常感谢您的帮助

2 个答案:

答案 0 :(得分:0)

您应该检查使用输入的数字是否等于随机数,如果是for循环的情况退出。 使用您的代码,循环运行整整4次,

答案 1 :(得分:0)

在你的循环中,你需要检查用户是否有正确的答案,如果他们这样做就退出循环。

for (var i = 0; i < 4; i++) {

    if (i == 0) {
        var userNum = +prompt("Enter a number between 1 and 10");
    } else {
        if (userNum < compNum) {
            userNum = prompt("Guess higher, you have " + (4 - i) + " turns left ", userNum);
        } else if (userNum > compNum) {
            userNum = prompt("Guess lower you have " + (4 - i) + " turns left ", userNum);
        }
    }
    if (userNum === compNum) {
        // they guessed right, so exit the loop
        break;
    }
    score--;

}

此外,我还会检查isNaN(userNum)是否检查您的用户是否确实输入了一个号码。如果你想给他们另一个机会,那取决于你。