需要一些关于Javascript数字猜测游戏的建议吗

需要一些关于Javascript数字猜测游戏的建议吗,javascript,Javascript,这是我的第一篇帖子,对我放松点,哈哈!我正在做一个数字游戏,它会提示用户猜测1到100之间的随机数。我遇到的问题是告诉用户之前是否已经猜到了一个数字。我自己一直在玩弄它,例如,如果我提交10个,然后再提交10个,它会说我重复了一个猜测(这是它应该做的)。如果我第三次说10,它不会告诉我我重复了一个猜测,而是说这个数字太低了(应该说我再次重复了这个猜测)。下面是需要澄清的JSFIDLE: var random=Math.ceil(Math.random()*100); var guessList=

这是我的第一篇帖子,对我放松点,哈哈!我正在做一个数字游戏,它会提示用户猜测1到100之间的随机数。我遇到的问题是告诉用户之前是否已经猜到了一个数字。我自己一直在玩弄它,例如,如果我提交10个,然后再提交10个,它会说我重复了一个猜测(这是它应该做的)。如果我第三次说10,它不会告诉我我重复了一个猜测,而是说这个数字太低了(应该说我再次重复了这个猜测)。下面是需要澄清的JSFIDLE:

var random=Math.ceil(Math.random()*100);
var guessList=新数组();
var guess=prompt(“你好,用户,我想的是一个介于1-100之间的数字。它是什么?”);
推送(猜测);
而(猜测!=随机){
对于(i=0;i随机){
猜测=提示(“你的猜测太高了!再试一次。”);
推送(猜测);
}
如果(猜测<随机){
猜测=提示(“你的猜测太低了!再试一次。”);
推送(猜测);
}
如果(猜测==随机){
警告(“干得好!你猜对了数字!花了你“+guessList.length+”Trys!”);
}
}

你在做if's,什么时候你应该做else if's。此外,您可以使用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!");
var random=Math.ceil(Math.random()*100);
var guessList=新数组();
var guess=prompt(“你好,用户,我想的是一个介于1-100之间的数字。它是什么?”);
while(猜测!=随机){
如果(!猜测){
//用户取消或输入了0,只需取消游戏即可
返回;
}else if(猜测列表.索引of(猜测)>=0){
//用户已经猜到了这个数字
guess=prompt(“您已经猜到了这个数字,请再试一次。”);
}否则{
//用户还没有猜到这个数字,存储他们的猜测,然后显示它们是过高还是过低
推送(猜测);
如果(猜测>随机){
猜测=提示(“你的猜测太高了!再试一次。”);
}else if(猜测<随机){
猜测=提示(“你的猜测太低了!再试一次。”);
}
} 
}
//当我们退出循环时,猜测是正确的
警告(“干得好!你猜对了数字!你用了”+(guessList.length+1)+“tries!”);
有关indexOf的更多信息:

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

编辑


编辑以修复一些逻辑错误,在此处更新了fiddle:

如果您在提示用户之前的每一次猜测,请从循环中取出
prompt()
调用。当我将if改为else if's时,它为什么不会在JSFIDLE上运行?我也不完全确定如何结束游戏。你能详细说明一下吗?我没有运行它-我看到一些错误,正在更新:)非常感谢mofojed,这很有意义!:)
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!");