Новичок в программировании и все еще изучаю основы. Я пытаюсь помешать игроку спамить одну правильную букву, чтобы увеличить счет. Я ограничиваю оценку тем, что она не может увеличиться выше 5, так как это слово из 5 букв, но в настоящее время я в тупике, возможно, из-за отсутствия кофе.
Вот мой код на скрипке, заранее спасибо. https://jsfiddle.net/JerryCoin/ngtbrd1c/1/
function checkLetter() {
document.onkeyup = function (event) {
guess = event.key.toLowerCase();
let found = false;
for (i = 0; i < word.length; i++) {
if (guess === word[i] && score < 5) {
correctLetters[i] = guess;
scoreBox.innerHTML = score += 1;
letterSpace();
return;
}
}
if (found) return;
if (wrongLetters.indexOf(guess) < 0 && attempts > 0) {
wrongLetters.push(guess);
document.getElementById("used-letters-box").innerHTML = wrongLetters.join('');
attemptsBox.innerHTML = attempts -= 1;
}
if (attempts == 0 && score < 5) {
loseGame();
}
};
}
Ответ на этот вопрос зависит от нескольких вещей: из того, что я могу различить, correctLetters кажется массивом, длина которого равна количеству символов в слове. Предполагая, что ваш массив correctLetters был создан с помощью correctLetters = Array(word.length)
, тогда элементы вашего массива не определены, пока correctLetters[i] не будет установлен функцией checkLetter. Таким образом, вы можете добавить еще одну проверку в свой цикл for
if (guess === word[i] && score < 5 && correctLetters[i] === undefined) //If the letter hasn't been guessed, it will be undefined
Другой стратегией, которую вы могли бы использовать, было бы создание нового массива правильных предположений и добавление правильных предположений, как вы это делаете с неправильными предположениями.
const correctGuesses = [];
...
if (guess === word[i] && score < 5 && !correctGuesses.includes(guess) {
correctLetters[i] = guess;
correctGuesses.push(guess);
scoreBox.innerHTML = score += 1;
letterSpace();
return;
}
вы можете проверить, является ли
correctLetters[i]
undefined
, прежде чем добавлять счет. если это не значит, что эта буква уже использовалась