Last active
August 29, 2015 14:19
-
-
Save ryanhightower/748acf3f8ea3295a1b11 to your computer and use it in GitHub Desktop.
JS Bin// source http://jsbin.com/vogile
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
/**************************************************************** | |
* Rock, Paper, Scissors, Lizard, Spock, | |
* Spider-Man, Batman, Wizard, Glock | |
***************************************************************/ | |
'// noprotect'; | |
function numberToName(number, choices){ | |
return choices[number]; | |
} | |
function nameToNumber(name, choices){ | |
return choices.indexOf(name); | |
} | |
function gameResult(player1, player2, resultsArr){ | |
if(player1==player2) return "Tie game."; | |
for(var i=0; i<resultsArr.length; i++){ | |
if(resultsArr[i].indexOf(player1)>=0 && resultsArr[i].indexOf(player2)>=0){ | |
return resultsArr[i]; | |
} | |
} | |
return ("An error occured. No matching result."); | |
} | |
function rpsls(name){ | |
compNumber = Math.floor(Math.random() * 9); | |
playerNumber = nameToNumber(name, choices); | |
difference = (playerNumber - compNumber); | |
differenceModular = (difference + 9) % 9; | |
// console.log("differenceModular: "+differenceModular); | |
// console.log( "Player chooses " + name); | |
compName = numberToName(compNumber, choices); | |
console.log( "You chose: "+name + " and Computer chooses: "+compName); | |
var result = gameResult(name, compName, results); | |
if (0 < differenceModular && differenceModular <= 4){ | |
result += " Player wins!"; | |
} | |
else if (4 < differenceModular){ | |
result += " Computer wins!"; | |
} | |
return result; | |
} | |
var player, | |
// The order or choices in the array matters! | |
choices = ["Rock", // 0 | |
"Spock", // 1 | |
"Batman", // 2 | |
"Glock", // 3 | |
"Paper", // 4 | |
"Lizard", // 5 | |
"Wizard", // 6 | |
"Spider-Man", // 7 | |
"Scissors"], // 8 | |
results = [ | |
"Spock vaporizes Rock.", // 0 (0,1) | |
"Batman explodes Rock.", // 1 (0,2) | |
"Glock breaks Rock.", // 2 (0,3) | |
"Paper covers Rock.", // 3 (0,4) | |
"Rock crushes Lizard.", // 4 (0,5) | |
"Rock interrupts Wizard.", // 5 (0,6) | |
"Rock knocks out Spider-Man.", // 6 (0,7) | |
"Rock crushes Scissors.", // 7 (0,8) | |
"Batman hangs Spock.", // 8 (1,2) | |
"Glock shoots Spock.", // 9 (1,3) | |
"Paper disproves Spock.", // 10 (1,4) | |
"Lizard poisons Spock.", // 11 (1,5) | |
"Spock zaps Wizard.", // 12 (1,6) | |
"Spock befuddles Spider-Man.", // 13 (1,7) | |
"Spock smashes Scissors.", // 14 (1,8) | |
"Glock kills Batman's mom.", // 15 (2,3) | |
"Paper delays Batman.", // 16 (2,4) | |
"Lizard confuses Batman (because he looks like Killer Croc).", // 17 (2,5) | |
"Wizard stuns Batman.", // 18 (2,6) | |
"Batman scares Spider-Man.", // 19 (2,7) | |
"Batman dismantles Scissors.", // 20 (2,8) | |
"Paper jams Glock.", // 21 (3,4) | |
"Lizard is too small for Glock.", // 22 (3,5) | |
"Wizard melts Glock.", // 23 (3,6) | |
"Spider-Man disarms Glock.", // 24 (3,7) | |
"Glock dents Scissors.", // 25 (3,8) | |
"Lizard eats Paper.", // 26 (4,5) | |
"Wizard burns Paper.", // 27 (4,6) | |
"Spider-Man rips Paper.", // 28 (4,7) | |
"Scissors cuts Paper.", // 29 (4,8) | |
"Wizard transforms Lizard.", // 30 (5,6) | |
"Spider-Man defeats Lizard.", // 31 (5,7) | |
"Scissors decapitates Lizard.", // 32 (5,8) | |
"Spider-Man annoys Wizard.", // 33 (6,7) | |
"Scissors cut Wizard.", // 34 (6,8) | |
"Scissors cut Spider-Man.", // 35 (7,8) | |
]; | |
while((player = prompt("Choose 'Rock', 'Paper', 'Scissors', 'Lizard', 'Spock', 'Spider-Man', 'Batman', 'Wizard' or 'Glock'.")) && choices.indexOf(player) < 0 ){ | |
alert("I said, choose 'Rock', 'Paper', 'Scissors', 'Lizard', 'Spock', 'Spider-Man', 'Batman', 'Wizard' or 'Glock'."); | |
} | |
if(!player){ console.log("Bye!"); }else{ | |
console.log(rpsls(player, choices, results) ); | |
} | |
// TESTS | |
// console.log(numberToName(8,choices)); console.log(nameToNumber("Rock",choices)); | |
// console.log(numberToName(7,choices)); console.log(nameToNumber("Spock",choices)); | |
// console.log(numberToName(6,choices)); console.log(nameToNumber("Paper",choices)); | |
// console.log(numberToName(5,choices)); console.log(nameToNumber("Lizard",choices)); | |
// console.log(numberToName(4,choices)); console.log(nameToNumber("Scissors",choices)); | |
// console.log(numberToName(3,choices)); console.log(nameToNumber("Spider-Man",choices)); | |
// console.log(numberToName(2,choices)); console.log(nameToNumber("Batman",choices)); | |
// console.log(numberToName(1,choices)); console.log(nameToNumber("Wizard",choices)); | |
// console.log(numberToName(0,choices)); console.log(nameToNumber("Glock",choices)); | |
// console.log(gameResult('Rock','Rock',results)); | |
// console.log(gameResult('Rock','Paper',results)); | |
// console.log(gameResult('Rock','Glock',results)); | |
// console.log(gameResult('Rock','Wizard',results)); | |
// console.log(gameResult('Rock','Batman',results)); | |
// console.log(rpsls("Rock") ); | |
// console.log(rpsls("Spock") ); | |
// console.log(rpsls("Paper") ); | |
// console.log(rpsls("Lizard") ); | |
// console.log(rpsls("Scissors") ); | |
// console.log(rpsls("Spider-Man") ); | |
// console.log(rpsls("Batman") ); | |
// console.log(rpsls("Wizard") ); | |
// console.log(rpsls("Glock") ); | |
//image: http://www.sheldonsquote.com/medias/435/458.jpg |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment