简体   繁体   中英

Conditional statement not functioning as expected: Javascript

I am trying to make a small rock, paper and scissors program between a user and the computer. Everything seems to work fine except the gameRound() conditional statement. It doesn't matter what the user input is. It just runs the (else) statement.

 // a function that determines what the computer's choice is
    const getComputerChoice = () => {
        let compChoice = Math.random();
    
        if(compChoice > 0.5) {
            return "Rock";
        } else if(compChoice < 0.5) {
            return "scissors";
        } else if(compChoice == 0) {
            return "paper";
        }
    }
    
    // prompts the user to enter rock, paper or scissors
    let playerSelection = prompt();
    let computerSelection = getComputerChoice();
    
    // the logic that decides who wins and loses
    const gameRound = (playerSelection, computerSelection) => {
        if(playerSelection === "rock" && computerSelection === "rock" || playerSelection === "paper" && computerSelection === "paper" || playerSelection === "scissors" && computerSelection === "scissors") {
                return "It's a tie!!!";
        }  else if(playerSelection === "rock" && computerSelection === "paper")  {
                return "Computer wins!!!";
        }  else if(playerSelection === "rock" && computerSelection === "scissors")  {
                return "You win!!!";
        }  else if(playerSelection === "paper" && computerSelection === "scissors")  {
                return "Computer wins!!!";
        }  else if(playerSelection === "paper" && computerSelection === "rock")  {
                return "You win!!!";
        }  else if(playerSelection === "scissors" && computerSelection === "rock")  {
                return "Computer wins!!!";
        }  else if(playerSelection === "scissors" && computerSelection === "paper")  {
                return "You win!!!";
        }  else {
            return "Winner undecided";
        }
    }
    
    // the function that begins the game
    const game = () => {
        for(let i = 0; i < 5; i++) {
            return gameRound();
        }
    }
    
    console.log(game());

gameRound conditional statement doesn't function as expected due to the newly declared parameters playerSelection , computerSelection . So it has to be a function statement rather than the inline arrow function.

Then, Javascript code would be as follows:

// a function that determines what the computer's choice is
const getComputerChoice = () => {
    let compChoice = Math.random();

    if(compChoice > 0.5) {
        return "Rock";
    } else if(compChoice < 0.5) {
        return "scissors";
    } else if(compChoice == 0) {
        return "paper";
    }
}

// the logic that decides who wins and loses
function gameRound(playerSelection, computerSelection) {
    if(playerSelection === "rock" && computerSelection === "rock" || playerSelection === "paper" && computerSelection === "paper" || playerSelection === "scissors" && computerSelection === "scissors") {
            return "It's a tie!!!";
    }  else if(playerSelection === "rock" && computerSelection === "paper")  {
            return "Computer wins!!!";
    }  else if(playerSelection === "rock" && computerSelection === "scissors")  {
            return "You win!!!";
    }  else if(playerSelection === "paper" && computerSelection === "scissors")  {
            return "Computer wins!!!";
    }  else if(playerSelection === "paper" && computerSelection === "rock")  {
            return "You win!!!";
    }  else if(playerSelection === "scissors" && computerSelection === "rock")  {
            return "Computer wins!!!";
    }  else if(playerSelection === "scissors" && computerSelection === "paper")  {
            return "You win!!!";
    }  else {
        return "Winner undecided";
    }
}

// prompts the user to enter rock, paper or scissors
let playerSelection = prompt();
let computerSelection = getComputerChoice();

for (let i = 0; i < 5; i++) {
    console.log(gameRound(playerSelection, computerSelection));
}

Or if you mean to play 5 rounds of the rock-paper-scissors, the allocation of playerSelection and computerSelection variables should be inside the for loop as follows:

// a function that determines what the computer's choice is
const getComputerChoice = () => {
    let compChoice = Math.random();

    if(compChoice > 0.5) {
        return "Rock";
    } else if(compChoice < 0.5) {
        return "scissors";
    } else if(compChoice == 0) {
        return "paper";
    }
}

// the logic that decides who wins and loses
function gameRound(playerSelection, computerSelection) {
    if(playerSelection === "rock" && computerSelection === "rock" || playerSelection === "paper" && computerSelection === "paper" || playerSelection === "scissors" && computerSelection === "scissors") {
            return "It's a tie!!!";
    }  else if(playerSelection === "rock" && computerSelection === "paper")  {
            return "Computer wins!!!";
    }  else if(playerSelection === "rock" && computerSelection === "scissors")  {
            return "You win!!!";
    }  else if(playerSelection === "paper" && computerSelection === "scissors")  {
            return "Computer wins!!!";
    }  else if(playerSelection === "paper" && computerSelection === "rock")  {
            return "You win!!!";
    }  else if(playerSelection === "scissors" && computerSelection === "rock")  {
            return "Computer wins!!!";
    }  else if(playerSelection === "scissors" && computerSelection === "paper")  {
            return "You win!!!";
    }  else {
        return "Winner undecided";
    }
}

for (let i = 0; i < 5; i++) {
    // prompts the user to enter rock, paper or scissors
    let playerSelection = prompt();
    let computerSelection = getComputerChoice();
    console.log(gameRound(playerSelection, computerSelection));
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM