Vamos preparar alguns dados e funções para serem usados posteriormente:
var outcomes = ['rock', 'scissors', 'paper'];
// Creates random outcome
var randomOutcome = function () {
return outcomes[Math.floor(Math.random() * outcomes.length)];
};
// Init prompter (ask user for answer)
var prompter = function () {
var answer = prompt('Select your outcome (paper, scissors, rock)');
return (outcomes.indexOf(answer) !== -1) ? answer : prompter();
};
Ok, agora temos quase tudo que precisamos. Agora podemos disparar o prompter:
// Get user answer
var userChoice = prompter();
Ok, temos a resposta do usuário … Vamos perguntar ao computador:
// Generate computers answer
var computerChoice = randomOutcome();
Ótimo. Isso é tudo de que precisamos. Agora, a magia.
var userChoiceIndex = outcomes.indexOf(userChoice);
var computerChoiceIndex = outcomes.indexOf(computerChoice);
console.log('Your choice: '+ userChoice);
console.log('Computer choice: ' + computerChoice);
if (userChoiceIndex === computerChoiceIndex) {
console.log('Draw');
}
else if (outcomes.splice(userChoiceIndex - 1, 1)[0] === computerChoice) {
console.log('Computer wins')
}
else {
console.log('You win');
}
A parte difícil aqui é esta linha:
(outcomes.splice(userChoiceIndex - 1, 1)[0] === computerChoice)
O que ele realmente faz é pegar o elemento antes que os usuários respondam e compará-lo com a escolha do computador. Se for o último elemento do array, leva o primeiro elemento e assim por diante.
A pedra ganha a tesoura, a tesoura ganha o papel e o papel cobre a pedra que ganha a tesoura etc.
Isso é tudo!