Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

How can I fix this rock, paper, scissor game in JavaScript?

The first function getComputerChoice() returns a random – rock, paper, or scissor. However, in the playRound function when the computer’ choice and user’s choice are compared, it shows incorrect answers for a few of them. For example, when I choose rock and computer chooses paper, I win, which is wrong.

I tried using if else and switch statements but faced the same problem. It would be great if someone could help me out.

let computerSelection = getComputerChoice();
let playerSelection = prompt("rock, paper, or scissor?").toLowerCase();

function getComputerChoice(){
       const randomNumber = Math.floor(Math.random()*3);
       if(randomNumber === 0){
            choice = "rock";
       } else if(randomNumber === 1){
            choice = "paper";
       } else if(randomNumber === 2){
            choice = "scissor";
       } return choice;

}



function playRound(playerSelection, computerSelection){
    let result = '';
    if(computerSelection === playerSelection){
        result = "It's a tie";
    } else if(computerSelection === 'paper' && playerSelection === 'rock'){
        result = "you lose";
    } else if(computerSelection === 'scissor' && playerSelection === 'rock'){
        result = "you win";
    } else if ((computerSelection === 'rock') && (playerSelection === 'paper')){
        result = "You win";
    } else if((computerSelection === 'scissor') && (playerSelection === 'paper')){
        result = "you lose";
    } else if ((computerSelection === 'paper') && (playerSelection === 'scissor') ){
        result = "You win";
    } else if((computerSelection === 'rock') && (playerSelection === 'scissor')){
        result = "You lose";
    }

    return result;
};

alert("The computer chose: " + getComputerChoice());

alert("That means " + playRound(playerSelection, computerSelection));

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

>Solution :

ChatGPT?

This code will run but it has a couple of problems:

In the getComputerChoice function, the variable choice is declared without const, let, or var. This means that it’s a global variable and could cause issues in the future.

The line alert("The computer chose: " + getComputerChoice()); is calling the getComputerChoice function twice, but it should only be called once and stored in the computerSelection variable.

The result of the playRound function is not being logged to the console or displayed in any other way, it’s only being returned.

To resolve these problems, you could modify the code as follows:

let computerSelection = getComputerChoice();
let playerSelection = prompt("rock, paper, or scissor?").toLowerCase();

function getComputerChoice(){
    let choice = '';
    const randomNumber = Math.floor(Math.random() * 3);
    if(randomNumber === 0){
        choice = "rock";
    } else if(randomNumber === 1){
        choice = "paper";
    } else if(randomNumber === 2){
        choice = "scissor";
    }
    return choice;
}

function playRound(playerSelection, computerSelection){
    let result = '';
    if(computerSelection === playerSelection){
        result = "It's a tie";
    } else if(computerSelection === 'paper' && playerSelection === 'rock'){
        result = "you lose";
    } else if(computerSelection === 'scissor' && playerSelection === 'rock'){
        result = "you win";
    } else if ((computerSelection === 'rock') && (playerSelection === 'paper')){
        result = "You win";
    } else if((computerSelection === 'scissor') && (playerSelection === 'paper')){
        result = "you lose";
    } else if ((computerSelection === 'paper') && (playerSelection === 'scissor') ){
        result = "You win";
    } else if((computerSelection === 'rock') && (playerSelection === 'scissor')){
        result = "You lose";
    }

    return result;
};

console.log("The computer chose: " + computerSelection);

console.log("That means " + playRound(playerSelection, computerSelection));
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading