如果猜到一个,如何记录两个相同的字母



我的刽子手游戏运行良好,但我有一个问题:............ 当要猜测的单词有两个相同的字母并且我猜一个时,它们都应该记录,但它只记录两个中的一个。

function playgame(yourword) {
//yourword array
/*********************/
let word = yourword.toUpperCase();
let letters = word.split("");
var answerArray = [letters[0]];
for (var i = 1; i < letters.length; i++) {
answerArray[i] = "_";
}
let answer = answerArray.join();
//hangman array
/*********************/
let hgm = ["H", "A", "N", "G", "M", "A", "N"];
let hgArray = [hgm[0]];
for (var i = 1; i < hgm.length; i++) {
hgArray[i] = "_";
}
//loop
let remainingLetters = word.length;
let remainingLetter = hgm.length;
while (remainingLetters > 0 & remainingLetter > 0) {
//show the array
console.log(answerArray.join(" ").toUpperCase());
console.log(hgArray.join(",").toUpperCase());
let guess = prompt("guess a letter").toUpperCase();
//add a letter if guessed correctly
for (var i = 0; i < letters.length; i++) {
if (word[i] === guess) {
answerArray[i] = guess;
remainingLetters--;
}
//add a letter to the hangman string if guessed incorrecty 
//MY PROBLEM IS HERE
for (var h = 0; h < hgm.length; h++) {
if (word[h] !== guess) {
remainingLetter--;
}
//TO HERE
}
}
console.log(answerArray.join(" ").toUpperCase());
console.log(hgArray.join(",").toUpperCase());
if (remainingLetters === 0) {
console.log("you win");
} else if (remainingLetters !== 0) {
console.log("you lose");
}
}
}

应该发生的示例


playgame('hello')
***********************
H_ _ _ _
//If i guess l if should do
H_  l l _ 
//NOT
H_  l _ _

请帮忙

检查此代码,您的代码几乎是正确的。我只做了很少的改变。我检查它是否工作正常。

function playgame(yourword) {
//yourword array
/*********************/
let word = yourword.toUpperCase();
let letters = word.split("");
var answerArray = [letters[0]];
for (var i = 1; i < letters.length; i++) {
answerArray[i] = "_";
}
let answer = answerArray.join();
//hangman array
/*********************/
let hgm = ["H", "A", "N", "G", "M", "A", "N"];
let hgArray = [hgm[0]];
for (var i = 1; i < hgm.length; i++) {
hgArray[i] = "_";
}
//loop
let remainingLetters = word.length - 1;  // First letter is visible by default
let remainingLetter = hgm.length;
while (remainingLetters > 0 && remainingLetter > 0) {
//show the array
console.log(answerArray.join(" ").toUpperCase());
console.log(hgArray.join(",").toUpperCase());
let guess = prompt("guess a letter").toUpperCase();
//add a letter if guessed correctly
for (var i = 0; i < letters.length; i++) {
if (word[i] === guess) {
answerArray[i] = guess;
remainingLetters--;
}
//add a letter to the hangman string if guessed incorrecty 
//MY PROBLEM IS HERE
if (word.indexOf(guess) === -1) {
remainingLetter--;
}
}
console.log(answerArray.join(" ").toUpperCase());
console.log(hgArray.join(",").toUpperCase());
if (remainingLetters === 0) {
console.log("you win");
} else if (remainingLetters !== 0) {
console.log("you lose");
}
}
}
playgame('Hello');

最新更新