Проблемы с пониманием потока программы Rock Paper Scissors

#javascript #for-loop #if-statement

#JavaScript #for-цикл #if-оператор

Вопрос:

Я прошу прощения за то, что задал еще один вопрос о Rock Paper scissors. Я впервые учусь программировать, и я бы предпочел понять, почему поток моего кода не работает, а затем скопировать и вставить правильный ответ.

Я вижу это так: я вызываю game(); который затем вызывает playerSelection(), computerPlay() и, наконец, playRound() . Затем эти переменные помещаются в playRound(), который определяет базу вывода для оператора if / else. Затем Game() повторяется еще четыре раза, пока не завершится, и окончательные итоги записываются в консоль.

До сих пор каждый раз, когда я запускаю игру, она всегда заканчивается пятью ничьими и счетом 0 как для игрока, так и для компьютера. Я некоторое время возился с этим, и кажется, что каждая мелочь, которую я делаю, «ломает» программу. Любая информация ОЧЕНЬ ценится!

 let playerChoice;
let computerChoice;
let i = 0;
       
function game(){
    
    for (i; i < 5; i  ) {
        function playerSelection() {
            let playerChoice = prompt("Rock paper scissors?");
            return playerChoice;
            }
            
    playerSelection();
        

           function computerPlay () {
               let computerChoice = ["rock", "paper","scissors"];
                return computerChoice[Math.floor(Math.random()*computerChoice.length)];
            }

    computerPlay();
   
    playRound();
        
        function playRound(playerChoice, computerChoice) {
            let playerScore = 0;
            let compScore = 0;

            if (playerChoice == computerChoice) {
                console.log("Draw!")
            } else if (playerChoice == "rock" amp;amp; computerChoice == "scissors"){
                console.log("You Win!")
                playerScore  ;
            } else if (playerChoice == "paper" amp;amp; computerChoice == "rock"){
                    console.log("You Win!")
                    playerScore  ;
            } else if (playerChoice == "scissors" amp;amp; computerChoice == "paper"){
                console.log("You Win!")
                playerScore  ;
            } else {
                console.log("You Lose!")
                compScore  ;
            }
            console.log(playerScore);
            console.log(compScore);
            return;
            }

    }
}


game();

if (playerScore > compScore) {
    console.log("Congratulations! You won the game!")
    } else {
    console.log("You lost the game!")
}  

Комментарии:

1. Вероятно, вам следует перефразировать свой вопрос, чтобы он был менее открытым, и вместо этого описать, какое поведение вы видите по сравнению с тем, что вы ожидаете. Такого рода вопросы, скорее всего, будут иметь повторное значение для потомков, поскольку кто-то может найти его в Google, и это может им помочь. Это приведет к меньшему количеству отрицательных голосов и большему количеству ответов.

Ответ №1:

Причина, по которой вы всегда видите Draw!это потому, что вы не используете возвращаемое значение двух функций playerSelection() и computerPlay() переопределяете значение playerChoice and computerChoice .