私はjavascriptを初めて使っています。私はゲームのような非常に基本的なハングマンを作成しましたが、問題がいくつかあります。私が問題を抱えていることの1つは、私の手紙です。今、私はキーを押すたびに配列が表示され、同じ文字(私は欲しくない)が繰り返されます。私は配列に、押されたキーを何回押しても、そのキーを何度押せても表示させたい。私はまた、同じキーが押された場合、推測のカウンタを同じに保つ方法を理解できません。Javascript hangman issues
条件が満たされる前にゲームが終了する理由もわかりません。たとえば、推測を使い果たしたときにアラートがポップアップし、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>
冗長なコード、または私はより良い何かできることに私を呼んでお気軽に。