@justifycontent

Почему выполняется второе условие, если первое уже истинно?

После ввода правильной буквы, мне выдает alert('Вы угадали букву: ' + guess); и сразу после этого сообщения выдает alert('Вы не угадали букву'), хотя это уже второе условие и оно является false, почему так?
let words = [
    'луч'
];

let word = words[Math.floor(Math.random() * words.length)];

let answerArr = [];
for (i = 0; i < word.length; i++ ) {
        answerArr[i] = '_';    
    }

let remainingLetters = word.length;
let attempt = 0;

while (remainingLetters > 0 && attempt <= 3) {
    alert(answerArr.join(' '));
    let guess = prompt('Введите букву:');
    if (guess === null) {
    break;
    } else if (guess.length !== 1) {
        alert('Вводить можно только одну букву!');
    } else { 
        for (let h = 0; h < word.length; h++) {
            if (word[h] === guess) {
                answerArr[h] = guess;
                alert('Вы угадали букву: ' + guess);
                remainingLetters--;
            } else if (word[h] !== guess) {
                alert('Вы не угадали букву');
                attempt++;
                break;
            }    
        };
    };
};
  • Вопрос задан
  • 226 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Потому что у вас логика работы программы неверная в принципе.
Скажем, вы ввели букву 'у'. Ваш код выполнит проверки:
'л' === 'у'?  нет.
'л' !== 'у'?  да. Вывод сообщения 'Вы не угадали букву'.
'у' === 'у'?  да. Вывод сообщения 'Вы угадали букву: у'.
'ч' === 'у'?  нет.
'ч' !== 'у'?  да. Вывод сообщения 'Вы не угадали букву'.

Сообщение должно выводиться по результатам проверки всех букв слова, а не для каждой буквы.
Уже угаданные буквы надо исключать из проверки.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы