繁体   English   中英

在Javascript数字猜谜游戏上需要一些建议

[英]Need some advice on a Javascript number guessing game

这是我有史以来的第一篇文章,所以对我容易一点哈哈! 我正在做一个数字游戏,提示用户猜测一个1到100之间的随机数。我遇到的问题是告诉用户他们以前是否已经猜过一个数字。 我自己一直在玩,例如,如果我提交10,然后再提交10,它将表示我重复了一个猜测(这是应该做的)。 如果我第三次说10,那并不能告诉我我已经重复了一次猜测,而是这个数字太低了(应该说我再次重复了一次猜测)。 这是用于澄清的jsfiddle: https ://jsfiddle.net/k1d8awf6/2/。

var random = Math.ceil(Math.random()*100);
var guessList = new Array();

var guess = prompt("Hello user, I'm thinking of a number between 1-100. What is it?");
guessList.push(guess);

while (guess != random) {    
    for (i = 0; i < guessList.length-1; i++) {
        if (guess == guessList[i]) {
        guess = prompt("You already guessed this number. Try again.");     
        }
    }
    if (guess > random) {
        guess = prompt("Your guess is too high! Try again.");
        guessList.push(guess);
    }
    if (guess < random) {
        guess = prompt("Your guess is too low! Try again.");
        guessList.push(guess);
    }
    if (guess == random) {
       alert("Nice job! You guessed the correct number! It took you " + guessList.length + " tries!"); 
    }
}

您正在执行if的操作,何时应该执行其他if的操作。 另外,您可以使用indexOf函数,而不是遍历元素。 例如:

var random = Math.ceil(Math.random()*100);
var guessList = new Array();

var guess = prompt("Hello user, I'm thinking of a number between 1-100. What is it?");
while (guess != random) {
    if (!guess) {
        // The user cancelled or entered 0, just cancel the game
        return;
    } else if (guessList.indexOf(guess) >= 0) {
        // User already guessed this number
        guess = prompt("You already guessed this number. Try again.");
    } else {
        // User hasn't guessed this number, store their guess then display whether they're too high or too low
        guessList.push(guess);

        if (guess > random) {
            guess = prompt("Your guess is too high! Try again.");
        } else if (guess < random) {
            guess = prompt("Your guess is too low! Try again.");
        }
    } 
}

// The guess is correct when we exit the loop
alert("Nice job! You guessed the correct number! It took you " + (guessList.length + 1) + " tries!");

有关indexOf的更多信息: https : //developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf

如果用户输入“ 0”或取消对话框,您可能还想结束游戏:)

编辑

编辑为修复一些逻辑错误,在此处更新了小提琴: https : //jsfiddle.net/k1d8awf6/8/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM