2017-04-05 80 views
0

我試圖做一個猜測遊戲,生成一個用戶猜測的隨機數。這個猜謎遊戲必須使用某種循環。現在,它被包含在一個函數中,該函數在用戶單擊按鈕時調用,而布爾值則限制用戶可以進行的猜測次數。用循環替換條件語句

我的理解是,一個循環不停止,直到它的條件得到滿足。如果我在這種情況下有一個循環,最終的輸出將是循環的最後一次迭代。 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

嗨,你可以提供更多的細節,你要如何比賽的工作,即你如何玩這個遊戲。你的代碼很整潔,你的解釋很好..但我很努力去理解目標。 – Seabizkit

回答

0

聽起來像問題聲明期望您阻止等待用戶輸入,而不是觸發函數來響應DOM事件。

看一看window.prompt

在循環中放置,直到用戶回答會阻礙循環。

0

使用prompt()通過retrohackerdo {} 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)