Javascript递减值和退出循环的问题

Problems with Javascript Decreasing Value and Quitting Loop

本文关键字:循环 问题 退出 Javascript      更新时间:2023-09-26

我在制作这个绞刑游戏时遇到了麻烦。我正在添加基本功能,以便如果您没有猜出正确的字母,那么guessNumber变量将减少一个。我目前的代码的问题是,当玩家猜测一个不正确的字母-它退出了while循环完全。我是否正在构建我的while循环或的定位guessNumber——;?我已经在这段代码周围修修补补了大约一个小时,仍然不能弄清楚!

<!DOCTYPE html>
<html>
<head>
    <title>Hangman</title>
</head>
<body>
<h1>Hangman</h1>
<script>
// array of words
var words = [
"trajectory", "symphony", "desire", "antfarm", "dancer", "happiness", "positioning",
"hobbit", "obituary", "cheetah", "sunrise", "antithesis", "wrong", "diamonds",
"partnership", "oblique", "sanctuary"];
// pick a random word
var word = words[Math.floor(Math.random() * words.length)];
// set up the answer array
var answerArray = [];
for (var i = 0; i < word.length; i++) {
    answerArray[i] = "_";
}
var remainingLetters = word.length;
//amount of guesses
var guessNumber = 5;
//the game loop
while (remainingLetters > 0 && guessNumber > 0) {
    //show the player their progress
    alert("Your word is " + answerArray.join(" ") + "and you have " +guessNumber+ " guesses left");
    //get a guess from player
    var guess = prompt("Guess a letter, or click cancel to stop playing.");
    if (guess === null) {
        //exit the loop
        alert("Ok you can quit");
        break;
    } else if (guess.length !== 1) {
        alert("Please enter a single letter.");
    } else
        //update the game state with the guess
        for (var j = 0; j < word.length; j++) {
            if (word[j] === guess) {
                answerArray[j] = guess;
                remainingLetters--;
            }
        } else {
        guessNumber--;
        }
    }
    //end game loop
//alert to congratulate player
alert(answerArray.join(" "));
alert("Good job! The answer was " + word);
</script>
</body>
</html>

每次循环没有找到该字母时,就递减guessNumbersguessNumbers--需要在循环之外,因此每次输入只减少一次猜测数。

// array of words
var words = [
"trajectory", "symphony", "desire", "antfarm", "dancer", "happiness", "positioning",
"hobbit", "obituary", "cheetah", "sunrise", "antithesis", "wrong", "diamonds",
"partnership", "oblique", "sanctuary"];
// pick a random word
var word = words[Math.floor(Math.random() * words.length)];
// set up the answer array
var answerArray = [];
for (var i = 0; i < word.length; i++) {
    answerArray[i] = "_";
}
var remainingLetters = word.length;
//amount of guesses
var guessNumber = 5;
//the game loop
while (remainingLetters > 0 && guessNumber > 0) {
    //show the player their progress
    alert("Your word is " + answerArray.join(" ") + "and you have " +guessNumber+ " guesses left");
    //get a guess from player
    var guess = prompt("Guess a letter, or click cancel to stop playing.");
    if (guess === null) {
        //exit the loop
        alert("Ok you can quit");
        break;
    } else if (guess.length !== 1) {
        alert("Please enter a single letter.");
    } else {
        //update the game state with the guess
        for (let j = 0; j < word.length; j++) {         
            if (word[j] === guess) {
                answerArray[j] = guess;
                remainingLetters--;
            }
         }
         guessNumber--;
    }
} //end game loop
//alert to congratulate player
alert(answerArray.join(" "));
if (remainingLetters === 0) alert("Good job! The answer was " + word);
else alert("No more guesses! The answer was " + word);
<!DOCTYPE html>
<html>
<head>
    <title>Hangman</title>
</head>
<body>
<h1>Hangman</h1>
  
  
</body>
<html>