Last active
December 23, 2015 16:49
-
-
Save varjmes/6664548 to your computer and use it in GitHub Desktop.
Rock, Paper, Scissors -> Is there a simpler way to do this?
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var userChoice = prompt("Do you choose rock, paper or scissors?"); | |
var computerChoice = Math.random(); | |
if (computerChoice < 0.34) { | |
computerChoice = "rock"; | |
} else if(computerChoice <= 0.67) { | |
computerChoice = "paper"; | |
} else { | |
computerChoice = "scissors"; | |
} | |
var compare = function(choice1, choice2) { | |
if (choice1 === choice2) { | |
return "The result is a tie!"; | |
} | |
if (choice1 === "rock") { | |
if (choice2 === "scissors") { | |
return "rock wins"; | |
} else { | |
return "paper wins"; | |
} | |
} | |
if (choice1 === "paper") { | |
if (choice2 === "rock") { | |
return "paper wins"; | |
} else { | |
return "scissors wins"; | |
} | |
} | |
if (choice1 === "scissors") { | |
if (choice2 === "paper") { | |
return "scissors wins"; | |
} else { | |
return "rock wins"; | |
} | |
} | |
if (choice1 != "rock" || choice1 != "paper" || choice1 != "scissors") { | |
return choice1.toUppercase() + " is not a valid choice!"; | |
}; | |
compare(userChoice, computerChoice); |
Because you're only choosing the winning result, you don't really need to nest your checks, the order doesn't matter. I don't know of any nice native Javascript array comparison methods but you could use #some a bit like this...
var rockChosen = bothChoicesAsArray.some(function(c) { return c == 'rock' });
var scissorsChosen = bothChoicesAsArray.some(function(c) { return c == 'rock' });
if( rockChosen && scissorsChosen) then do something
You could probably squeeze it down a little more by pulling out the check into a separate re-useable function.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
You could make the choices an array and then make the computer pick a random choice - save doing the if/else statement and then assigning the choice (not tested yet):