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

Новичок в программировании и все еще изучаю основы. Я пытаюсь помешать игроку спамить одну правильную букву, чтобы увеличить счет. Я ограничиваю оценку тем, что она не может увеличиться выше 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
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
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;
}

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