用循环

时间:2017-04-05 19:48:50

标签: javascript

我正在尝试制作一个猜测游戏,生成用户猜测的随机数。这个猜谜游戏必须使用某种循环。现在它被包含在用户单击按钮时调用的函数中,以及限制用户可以进行猜测的布尔值。

根据我的理解,循环运行时不会停止,直到满足条件。如果我在这种情况下有一个循环,最终输出将是循环的最后一次迭代。 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()

2 个答案:

答案 0 :(得分:0)

听起来问题语句要求您阻止等待用户输入,而不是触发响应DOM事件的函数。

查看window.prompt

将其置于循环中会阻止循环直到用户响应。

答案 1 :(得分:0)

根据retrohackerprompt()循环的建议使用do {} while (),以下代码演示了这一点:

&#13;
&#13;
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;
&#13;
&#13;