【发布时间】:2021-04-05 12:51:07
【问题描述】:
我对编程还很陌生,并且被分配了基于 Javascript 的 Hangman 游戏。到目前为止,我的游戏运行良好,但是当被猜出的单词有一个不止一次出现的字母时,我遇到了问题。例如,如果单词是 APPLE 并且我输入“P”,程序会返回 _ P _ _ _,而我应该得到 _ P P _ _。我已经尝试深入寻找答案,但到目前为止找不到任何我可以实施的东西。非常感谢任何帮助!
// Player chooses word for other player to guess
let word = prompt('Welcome to Hangman! Player 1, please enter a word for Player 2 to guess.').toUpperCase();
console.log(word);
let underScore = [];
let rightWord = [];
let wrongWord = [];
let dUS = document.getElementsByClassName('underscore');
let dRG = document.getElementsByClassName('rightGuess');
let dWG = document.getElementsByClassName('wrongGuess');
// ***
lettersInWord = word.split('');
// ***
const maxStrikes = 6; // max number of allowed mistakes
let strikes = 0; // number of incorrect guesses so far
// Create underscores for length of word
function createUnderscore() {
for (let i = 0; i < word.length; i++) {
underScore.push('_');
}
return underScore;
}
console.log(createUnderscore());
dUS[0].innerHTML = underScore.join(' '); //Displays underscores in DOM
document.getElementById('sub-btn').addEventListener('click', processGuess);
// Sets initial image
if (strikes == 0) {
document.getElementById('pics').src = "../Project 3 - Hangman/images/strike-0.png"
}
function processGuess(e) {
e.preventDefault();
let guess = document.getElementById('usr-input').value.toUpperCase();
console.log(word.indexOf(guess));
// If user guess is correct,
if (word.indexOf(guess) > -1) {
for (var i = 0; i < word.length; i++) {
if (word[i] === guess) {
rightWord.push(guess); // Adds guessed letter to rightWord Array
underScore[word.indexOf(guess)] = guess; // Adds correct letter?
dUS[0].innerHTML = underScore.join(' '); // Replaces underscore with correcct letter
dRG[0].innerHTML = rightWord.join(', '); // Adds correct letter to Right Guesses box
}
}
// Check to see if user word matches guesses
if (underScore.join('') == word) {
alert('You win! The word was: ' + word);
}
} else {
// Add to wrongWord array
wrongWord.push(guess);
console.log(wrongWord);
dWG[0].innerHTML = wrongWord.join(', ');
strikes++;
console.log('Number of Strikes: ' + strikes);
// Sets correct image according to number of strikes
if (strikes == 0) {
document.getElementById('pics').src = "../Project 3 - Hangman/images/strike-0.png"
} else if (strikes == 1) {
document.getElementById('pics').src = "../Project 3 - Hangman/images/strike-1.png"
} else if (strikes == 2) {
document.getElementById('pics').src = "../Project 3 - Hangman/images/strike-2.png"
} else if (strikes == 3) {
document.getElementById('pics').src = "../Project 3 - Hangman/images/strike-3.png"
} else if (strikes == 4) {
document.getElementById('pics').src = "../Project 3 - Hangman/images/strike-4.png"
} else if (strikes == 5) {
document.getElementById('pics').src = "../Project 3 - Hangman/images/strike-5.png"
} else if (strikes == 6) {
document.getElementById('pics').src = "../Project 3 - Hangman/images/strike-6.png"
}
if (strikes == maxStrikes) {
alert('You lose. The correct word was: ' + word);
}
}
}
console.log(strikes);
【问题讨论】:
标签: javascript