javascript - Javascript 减少值和退出循环的问题

标签 javascript html

我正在构建的这个刽子手游戏遇到了问题。我添加了基本功能,这样如果您没有猜出正确的字母,则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>

关于javascript - Javascript 减少值和退出循环的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40064412/

相关文章:

javascript - ng-repeat 与关联数组

php - 如何通过apache服务器执行php调用的带有selenium的python脚本?

javascript - 我们可以重写 Javascript 中的内置函数吗?

jquery - 在悬停时定位 li 但不是父 li

javascript - 基于 CSS 类和文本的排序元素不起作用

javascript - iPad 中加载框架时的 window.open() 不起作用

javascript - 如何使用 Typescript 创建连接到 Redux 的高阶 React 组件?

javascript - if 语句用于根据电子邮件检查用户是否获得授权

javascript - 使用主文本框内容自动填充文本框

javascript - Div 不会淡出 - Chrome 错误