Сравнение строкового значения с вводом от пользователя не оценивается должным образом - PullRequest
0 голосов
/ 06 апреля 2020
// Computer randomly selects Rock, Paper / Scissors
        computerChoice = function computerPlay() {
            let r = Math.random() * 3;
            let choice;

            if(r > 2) {
                console.log('Rock');
                return 'rock';
            } else if (r > 1) {
                console.log('Scissors');
                return 'scissors';
            } else {
                console.log('Paper');
                return 'paper';
            }
        }


        //compare results
        function compareChoice(userChoice, computerChoice) {
            if (userChoice === computerChoice) {
            console.log('Draw')
            } else if(userChoice === 'paper') {
                if(computerChoice == 'scissors') {
                    console.log ('You lose, try again!')
                } else {
                    console.log('You win!')
                }
            } else if(userChoice === 'rock') {
                if(computerChoice === 'paper') {
                    console.log('You lose! Try again!')
                } else {
                    console.log('You win!')
                }
            } else if(userChoice === 'scissors') {
                if (computerChoice === 'rock') {
                    console.log('You Lose! Try again!')
                } else {
                    console.log('You win!')
                }
            }

        }



        function game() {
            let userChoice = prompt('Choose rock, paper, or scissors!');
            console.log('Your choice was ' + userChoice);
            computerChoice();
            compareChoice();
        }

        game();

Привет! Я пытаюсь завершить простой проект Rock, paper ножницы для проекта Odin в Javascript, однако всякий раз, когда я пытаюсь сравнить строковое значение с вводом от пользователя, он продолжает регистрировать рисование, что означает, что оно оценивается как true для первого оператора if, независимо от того, что вводит пользователь. Я искал, и я не уверен, что я делаю неправильно. Любая помощь будет искренне признателен, спасибо!

Ответы [ 3 ]

0 голосов
/ 06 апреля 2020

В вашей игровой функции вы звоните compareChoice() без параметров. Я не уверен, как этот оператор работает, но единственное объяснение состоит в том, что оба параметра присваиваются null. Отсюда и ответ "Draw".

Попробуйте вместо этого

function game() {
    let userChoice = prompt('Choose rock, paper, or scissors!');
    console.log('Your choice was ' + userChoice);
    compareChoice(userChoice, computerChoice());
}
0 голосов
/ 06 апреля 2020

Когда вы вызываете функцию compareChoice(), код не знает значений для userchoice и computerChoice(). Измените код, передав эти значения в качестве аргументов compareChoice() следующим образом:

computerChoice = function computerPlay() {
    let r = Math.random() * 3;
    let choice;

    if (r > 2) {
         console.log('Rock');
         return 'rock';
    } else if (r > 1) {
        console.log('Scissors');
        return 'scissors';
    } else {
        console.log('Paper');
        return 'paper';
    }
}

compareChoice = (userChoice, computerChoice) => {
    if (userChoice === computerChoice) {
        console.log('Draw')
    } else if (userChoice === 'paper') {
        if (computerChoice == 'scissors') {
            console.log ('You lose, try again!')
        } else {
            console.log('You win!')
        }
    } else if (userChoice === 'rock') {
        if(computerChoice === 'paper') {
            console.log('You lose! Try again!')
        } else {
            console.log('You win!')
        }
    } else if (userChoice === 'scissors') {
        if (computerChoice === 'rock') {
            console.log('You Lose! Try again!')
        } else {
            console.log('You win!')
        }
    }
}

game = () => {
    let userChoice = prompt('Choose rock, paper, or scissors!');
    console.log('Your choice was ' + userChoice);
    compareChoice(userChoice, computerChoice());
}

game();
0 голосов
/ 06 апреля 2020

Вам нужно передать выбор пользователя и компьютера в сравнение.

    function game() {
        let userChoice = prompt('Choose rock, paper, or scissors!');
        console.log('Your choice was ' + userChoice);
        compareChoice(userChoice, computerChoice());
    }
...