我正在构建的这个刽子手游戏遇到了问题。我添加了基本功能,这样如果您没有猜出正确的字母,则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>
最佳答案
每次循环找不到该字母时,您都会递减 guessNumbers
。 guessNumbers--
需要位于循环之外,因此每次输入只会减少一次猜测数。
// 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/