[英]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.