Я не могу понять, как мои заявления If воспринимаются как истинные - PullRequest
0 голосов
/ 26 сентября 2019

Я играю в игру «Рок, бумага, ножницы» и собираюсь добавить валидацию в метод подсказки, чтобы, если пользователи вводят любые слова, не являющиеся «скалой», «бумагой» или «ножницами», мы снова запрашиваем.

Кажется, я не понимаю, почему приведенный ниже код не работает, и даже когда я набираю "rock", он снова заставляет меня войти.

for (i = 0; i < 5; i++) {
        let valid = false;
        let askPlayer = prompt("Rock, Paper or Scissor?");
        while(!valid) {
            if (askPlayer !== "rock" || askPlayer !== "paper" || askPlayer !== "scissor" || askPlayer !== "Rock" || askPlayer !== "Paper" || askPlayer !== "Scissor") {
                askPlayer = prompt("Enter again. You seem to have entered an invalid value");

            }
            else { valid = true; }
        }
        play(askPlayer, computerPlay());
    }

Ответы [ 3 ]

4 голосов
/ 26 сентября 2019

Я думаю, что вы, возможно, перепутали свои утверждения против отрицательных.Ваше условие гласит: «Если игрок указывает значение, которое не соответствует ни одному из них, спросите еще раз»

Более удобное для человека условие:

var valid_responses = ["rock","paper","scissors"];
if (valid_responses.includes(askPlayer.toLowerCase())){
  valid = true;
} else {
  askPlayer = prompt("Enter again. You seem to have entered an invalid value");
}
1 голос
/ 26 сентября 2019

Полагаю, вам не нужно это условие

askPlayer !== "rock" || askPlayer !== "paper" || askPlayer !== "scissor" || askPlayer !== "Rock" || askPlayer !== "Paper" || askPlayer !== "Scissor"

, но это

askPlayer !== "rock" && askPlayer !== "paper" && askPlayer !== "scissor" && askPlayer !== "Rock" && askPlayer !== "Paper" && askPlayer !== "Scissor"

Просто измените все || на &&

0 голосов
/ 26 сентября 2019

В настоящее время ваш код говорит: 'если вход не "рок" ИЛИ, если вход не "ножничный" ИЛИ, если вход не "бумага" ... и т. Д.

если вы наберете «рок», вы будете отклонены, потому что ввод не «ножница» и не «бумага».

Вы должны сказать «если ввод не« рок »И если вводне "ножницами" И если вход не "бумажный" ... и т. д.

Так что измените все свои ||to &&:)

Вы также можете попробовать сделать askPlayer.toLowerCase () перед проверкой его действительности, чтобы вам не приходилось повторять слова «Рок», «Бумага», «Ножницы».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...