Как я могу остановить игрока, рассылающего правильную букву, от увеличения счета

Новичок в программировании и все еще изучаю основы. Я пытаюсь помешать игроку спамить одну правильную букву, чтобы увеличить счет. Я ограничиваю оценку тем, что она не может увеличиться выше 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[i]undefined, прежде чем добавлять счет. если это не значит, что эта буква уже использовалась

coglialoro 09.04.2022 15:15
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Сравнение структур данных: Массивы и объекты в Javascript
Сравнение структур данных: Массивы и объекты в Javascript
Итак, вы изучили основы JavaScript и хотите перейти к изучению структур данных. Мотивация для изучения/понимания Структур данных может быть разной,...
Создание собственной системы электронной коммерции на базе Keystone.js - настройка среды и базовые модели
Создание собственной системы электронной коммерции на базе Keystone.js - настройка среды и базовые модели
Прошлая статья была первой из цикла статей о создании системы электронной коммерции с использованием Keystone.js, и она была посвящена главным образом...
Приложение для отслеживания бюджета на React js для начинающих
Приложение для отслеживания бюджета на React js для начинающих
Обучение на практике - это проверенная тема для достижения успеха в любой области. Если вы знаете контекст фразы "Практика делает человека...
Стоит ли использовать React в 2022 году?
Стоит ли использовать React в 2022 году?
В 2022 году мы все слышим о трендах фронтенда (React, Vue), но мы не знаем, почему мы должны использовать эти фреймворки, когда их использовать, а...
1
1
29
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ответ на этот вопрос зависит от нескольких вещей: из того, что я могу различить, 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;
}

Другие вопросы по теме