我刚开始学习JavaScript,做了一个基本的类似“猜词游戏”的小游戏,但是我遇到了一些问题。其中之一是我的lettersGuessed数组。现在每次按键时数组都会显示,并且会重复相同的字符(这不是我想要的)。我想让数组仅在第一次按下键时显示一次,不管按下多少次该键。我还无法弄清楚如何让猜测计数器在按下相同的键时保持不变。
此外,我不确定为什么游戏会在满足条件之前结束。例如,当你用完所有猜测时,警报将弹出,但你仍然可以看到你还有1次猜测的机会。
此外,我不确定为什么游戏会在满足条件之前结束。例如,当你用完所有猜测时,警报将弹出,但你仍然可以看到你还有1次猜测的机会。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<link rel="stylesheet" type="text/css" href="style.css">
<body>
<div id="placeholders"> </div>
<div id="guessesRemaining"></div>
<div id="wins"></div>
<div id="losses"></div>
<div id="pressedLetters"></div>
<script type="text/javascript">
var arrayOfWords = ["alpha", "bravo", "charlie", "delta", "echo"];
var pickedWord;
var pickedWordArray = [];
var pickedWordPlaceholders = [];
var wins = 0;
var losses = 0;
var lettersGuessed;
var guessesLeft;
function newGame() {
guessesLeft = 10;
lettersGuessed = [];
pickedWord = arrayOfWords[Math.floor(Math.random() * arrayOfWords.length)];
pickedWordArray = pickedWord.split("");
pickedWordPlaceholders = [];
for (var i = 0; i < pickedWordArray.length; i++) {
pickedWordPlaceholders.push("_");
var placeHolderString = pickedWordPlaceholders.join(' ');
document.querySelector("#guessesRemaining").innerHTML ="Lives: " + guessesLeft;
document.querySelector("#placeholders").innerHTML = placeHolderString;
document.querySelector("#wins").innerHTML = "Wins: " + wins;
document.querySelector("#losses").innerHTML = "Losses: " + losses;
}
}
document.onkeyup = function(event) {
var userGuess = event.key;
lettersGuessed.push(userGuess);
for (var i = 0; i < pickedWordArray.length; i++) {
if (userGuess === pickedWordArray[i]) {
pickedWordPlaceholders[i] = userGuess;
}
}
document.querySelector("#placeholders").innerHTML = pickedWordPlaceholders.join(" ");
document.querySelector("#pressedLetters").innerHTML = lettersGuessed;
if (pickedWordPlaceholders.indexOf(userGuess) === -1) {
guessesLeft--;
}
document.querySelector("#guessesRemaining").innerHTML ="Lives: " + guessesLeft;
if (guessesLeft === 0){
losses++;
alert("You lose!");
newGame();
}
document.querySelector("#losses").innerHTML = "Losses: " + losses;
if (pickedWordPlaceholders.join("") === pickedWord){
wins++;
alert("You win!");
newGame();
}
document.querySelector("#wins").innerHTML = "Wins: " + wins;
}
newGame();
</script>
</body>
</html>
请随时指出我重复的代码或者我可以做得更好的地方。