我正在尝试制作一个猜测游戏,生成用户猜测的随机数。这个猜谜游戏必须使用某种循环。现在它被包含在用户单击按钮时调用的函数中,以及限制用户可以进行猜测的布尔值。
根据我的理解,循环运行时不会停止,直到满足条件。如果我在这种情况下有一个循环,最终输出将是循环的最后一次迭代。 NumGuesses的值为6,因为循环停止时。如何用循环替换条件并仍然有效?
//Declare variables and constants
var guessesLeft; //number of guesses the user has left
var userGuess; //user's guess
var highLimit = 1000; //high parameter
var numGuesses = 1; //number of guesess the user has guessed
var allowedGuesses = 6; //number of allowed guesses
var NL = "\n"; //new line
//function to be called when the user presses Submit Guess
function guessingGame() {
//random number that is generated
var randNum = Math.floor(Math.random() * highLimit + 1);
if (numGuesses <= allowedGuesses) {
userGuess = prompt("Enter a number between 1 and " + highLimit + ": " , "")
userGuess = parseInt(userGuess);
guessesLeft = (allowedGuesses - numGuesses) + " guesses left.";
//If userGuess is in the specified parameters
//If userGuess is larger than 1 and smaller than the higher parameter
if ((userGuess > 1) && (userGuess < highLimit)) {
//If userGuess does not equal randNum
if (userGuess !== randNum) {
//If userGuess is too low
if (userGuess < randNum) {
//output
document.numForm.gameResults.value = "You guessed too low! Please guess again. " + NL + "Your current number of guesses: " + numGuesses + NL + "You have " + guessesLeft;
}
//If userGuess is too high
else if (userGuess > randNum) {
document.numForm.gameResults.value = "You guessed too high! Please guess again. " + NL + "Your current number of guesses: " + numGuesses + NL + "You have " + guessesLeft;
}//end if
}
else {
//If userGuess is correct
document.numForm.gameResults.value = "You guessed correctly!";
}//end if
}
else {
document.numForm.gameResults.value = "Your guess was out of the specified parameters. Please try again. " + NL + "Your current number of guesses: " + numGuesses + NL + "You currently have " + guessesLeft;
//user may have entered their guess wrong
numGuesses--;
}//end if
//add to number of guesses so the program stops when it reaches the allowed number
numGuesses++;
}//end outer if statement
return false;
}//end guessingGame()
答案 0 :(得分:0)
答案 1 :(得分:0)
根据retrohacker和prompt()
循环的建议使用do {} while ()
,以下代码演示了这一点:
var minNumber = 1;
var maxNumber = 2;
var guessesLeft = 3;
var numberToBeGuessed = minNumber +
(Math.random() * (maxNumber - minNumber + 1) | 0);
var succeeded;
var message = 'Make a guess';
do {
if (prompt(message) == numberToBeGuessed) {
alert('Correct, the number is ' + numberToBeGuessed);
succeeded = true;
} else {
guessesLeft--;
message = 'Try again, ' +
guessesLeft +
' guess' + (guessesLeft > 1 ? 'es' : '') +
' left';
}
} while (!succeeded && guessesLeft)
&#13;