MaminProgrammist
@MaminProgrammist
Я слава беброу

Что делать если программа никаким образом не реагирует на условие else if (*что-то* == null)?

Всем привет! Учусь js. Мне нужно было сделать так, чтобы если пользователь нажимал кнопку отмены при выборе - Камень-ножницы-бумага - или - Камень-ножницы-бумага-ящерица-спок - игра завершалась и показывала итоговые очки за всю игру. Это работает, но только, если в
} else if (userChoice == null) {
      alert('ок')
     break;
}


я пишу, например, !isNan(userChoice) или userChoice === '' || userChoice === ' '. Что делать? И, если вам не будет лень, подскажите - как мне укоротить код?

while (true) {
    var gameModeChange = prompt('Выберите режим игры - rps или rpsls (Rock-paper-scissors или Rock-paper-scissors-lizard-spock)');

    var computerScore = 0;
    var userScore = 0;
    
    if (gameModeChange === 'rps' || gameModeChange === 'rpsls') {
        while (true) {
            const computerRandChoice = () => {
                let random = Math.random()
                if (gameModeChange === 'rps') {
                    if (random <= 0.33) {
                        computer = 'камень';
                    } else if (0.34 <= random && random <= 0.66) {
                        computer = 'ножницы';
                    } else {
                        computer = 'бумага';
                    }
                } else if (gameModeChange === 'rpsls') {
                    if (random <= 0.2) {
                        computer = 'камень';
                    } else if (0.21 <= random && random <= 0.4) {
                        computer = 'ножницы';
                    } else if (0.41 <= random && random <= 0.6) {
                        computer = 'бумага';
                    } else if (0.61 <= random && random <= 0.8) {
                        computer = 'ящерица';
                    } else {
                        computer = 'спок';
                    }
                };

                return computer
            };

            computerRandChoice()

            let computerChoice = computerRandChoice();

            if (gameModeChange === 'rps') {
                let userChoice = prompt('Камень\nНожницы\nБумага\n(Отобразить) очки')
                userChoice = userChoice.toLowerCase();
                if (userChoice === 'камень' && computerChoice === 'ножницы' || userChoice === 'ножницы' && computerChoice === 'бумага' || userChoice === 'бумага' && computerChoice === 'камень') {
                    userScore += 1;
                    alert(`Вы получили очко, потому-что Вы выбрали ${userChoice}, а компьютер выбрал ${computerChoice}.`)
                } else if (computerChoice === 'камень' && userChoice === 'ножницы' || computerChoice === 'ножницы' && userChoice === 'бумага' || computerChoice === 'бумага' && userChoice === 'камень') {
                    computerScore += 1;
                    alert(`Компьютер получил очко, потому-что вы выбрали ${userChoice}, а компьютер выбрал ${computerChoice}.`)
                } else if (userChoice === 'очки') {
                    alert(`Вы: ${userScore}\nКомпьютер: ${computerScore}`)
                } else if (userChoice === computerChoice) {
                    alert('Ничья');
                } else if (userChoice == null) {
                    alert('ок')
                    break;
                }
            } else if (gameModeChange === 'rpsls') {
                let userChoice = prompt('Камень\nНожницы\nБумага\nЯщерица\nСпок\n(Отобразить) Очки')
                userChoice = userChoice.toLowerCase();
                if (userChoice === 'камень' && computerChoice === 'ножницы' || userChoice === 'камень' && computerChoice === 'ящерица' || userChoice === 'ящерица' && computerChoice === 'бумага' || userChoice === 'ящерица' && computerChoice === 'спок' || userChoice === 'спок' && computerChoice === 'ножницы' || userChoice === 'спок' && computerChoice === 'камень' || userChoice === 'ножницы' && computerChoice === 'бумага' || userChoice === 'ножницы' && computerChoice === 'ящерица' || userChoice === 'бумага' && computerChoice === 'спок' || userChoice === 'бумага' && computerChoice === 'камень') {
                    userScore += 1;
                    alert(`Вы получили очко, потому-что Вы выбрали ${userChoice}, а компьютер выбрал ${computerChoice}.`)
                } else if (computerChoice === 'камень' && userChoice === 'ножницы' || computerChoice === 'камень' && userChoice === 'ящерица' || computerChoice === 'ящерица' && userChoice === 'бумага' || computerChoice === 'ящерица' && userChoice === 'спок' || computerChoice === 'спок' && userChoice === 'ножницы' || computerChoice === 'спок' && userChoice === 'камень' || computerChoice === 'ножницы' && userChoice === 'бумага' || computerChoice === 'ножницы' && userChoice === 'ящерица' || computerChoice === 'бумага' && userChoice === 'спок' || computerChoice === 'бумага' && userChoice === 'камень') {
                    computerScore += 1;
                    alert(`Компьютер получил очко, потому-что вы выбрали ${userChoice}, а компьютер выбрал ${computerChoice}.`)
                } else if (userChoice === computerChoice) {
                    alert('Ничья');
                } else if (userChoice === 'очки') {
                    alert(`Вы: ${userScore}\nКомпьютер: ${computerScore}`)
                } else if (userChoice == null) {
                    alert('ок')
                    break;
                }
            } 
        }

        let diff = 0;

        if (userScore > computerScore) {
            diff += userScore - computerScore;
            alert(`Вы победили с отрывом в ${diff} очко/очка/очков\nВы победили ${userScore} раз\nКомпьютер ${computerScore} раз`)
        } else if (computerScore > userScore) {
            diff += computerScore - userScore;
            alert(`Компьютер победил вас с отрывом в ${diff} очко/очка/очков\nВы победили ${userScore} раз\nКомпьютер ${computerScore} раз`)
        } else if (computerScore === userScore){
            alert(`Ничья\nВы победили ${userScore} раз\nКомпьютер ${computerScore} раз`)
        }

    }
}
  • Вопрос задан
  • 69 просмотров
Решения вопроса 1
MaminProgrammist
@MaminProgrammist Автор вопроса
Я слава беброу
Я так и не понял в чем проблема, но оказывается, что нужно было не отслеживать отмену, а отслеживать: написал пользователь в ввод слово "отмена" или нет. Это было легко, так-что проблему я решил
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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