Search code examples
javascriptfunctionif-statementundefined

rock paper scissors javascript code doesnt work. I made this as my first project and i dont know at all why it doesnt work


function playRound(playerSelection, computerSelection) {
   
    if (playerSelection == computerSelection) {
        console.log("its a tie")

       } else if (playerSelection == "rock" && computerSelection == "paper") {
        return "you lose" 

     } else if (playerSelection == "rock" && computerSelection == "scissors") {
        
        return "you win"  

     }  else if (playerSelection == "paper" && computerSelection == "scissors") {
        return "you lose" 

     } else if (playerSelection == "paper" && computerSelection == "rock") {
        return "you win" 

     } else if (playerSelection == "scissors" && computerSelection == "rock") {
        return "you lose" 

     } else if (playerSelection == "scissors" && computerSelection == "paper") {
        return "you win" 
     }    
}
   
let playerSelection = parseInt(prompt("input rock paper or scissors"))
let computerSelection = Math.random();

if (computerSelection < 0.34){
  computerSelection = "rock"
} else if(computerSelection <=0.67){
  computerSelection = "paper"
} else {
  computerSelection = "scissors"
}

console.log(playRound(playerSelection, computerSelection))



  

I know its probably not the best method but i thought it should get the job done, any help is useful as i don't know where the mistake can be, thank you. I looked at some other posts but couldn't find the solution. This is my first post so if there is some info missing or something just let me know!


Solution

  • You shouldn't be using parseInt because the user will be entering string data, not numbers.

    You also need to move some of your console.log() statements around a bit, but other than that, you're good to go!

    // No parseInt when the input is strings that need to be strings
    let playerSelection = prompt("input rock paper or scissors");
    let computerSelection = Math.random();
    
    if (computerSelection < 0.34) {
      computerSelection = "rock"
    } else if(computerSelection <=0.67) {
      computerSelection = "paper"
    } else {
      computerSelection = "scissors"
    }
    
    playRound(playerSelection, computerSelection)
    
    function playRound(playerSelection, computerSelection) {
        // Instead of returning in each branch, just set the value of a string that you can
        // report at the end of the function.
        let result = "";
       
        if (playerSelection == computerSelection) {
           result = "its a tie"
         } else if (playerSelection == "rock" && computerSelection == "paper") {
            result = "you lose" 
         } else if (playerSelection == "rock" && computerSelection == "scissors") {
            result =  "you win"  
         }  else if (playerSelection == "paper" && computerSelection == "scissors") {
            result =  "you lose" 
         } else if (playerSelection == "paper" && computerSelection == "rock") {
            result =  "you win" 
         } else if (playerSelection == "scissors" && computerSelection == "rock") {
            result =  "you lose" 
         } else if (playerSelection == "scissors" && computerSelection == "paper") {
            reresult = "you win" 
         }
         
         console.log("Compupter picked: " + computerSelection, "You picked " + playerSelection, result);
    }