-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrock-paper-scissors.js
90 lines (73 loc) · 1.77 KB
/
rock-paper-scissors.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
//Rock, Paper, Scissors
const ROCK = 1;
const PAPER = 2;
const SCISSORS = 3;
const INVALIDCHOICE = "Invalid Input❗";
const TIE = 0;
const USERWON = 1;
const COMPUTERWON = 2;
function getChoiceVisual(choice) {
switch (choice) {
case ROCK:
return "🪨";
case PAPER:
return "📰";
case SCISSORS:
return "✂️";
default:
return INVALIDCHOICE;
}
}
function generateComputerChoice() {
const randomChoice = (Math.round(Math.random() * 100) % 3) + 1;
let choiceVisual = getChoiceVisual(randomChoice);
console.log("Computer has chosen: " + choiceVisual);
return randomChoice;
}
function userChoice() {
const userInput = +prompt(
"Enter " +
ROCK +
" for Rock 🪨\nEnter " +
PAPER +
" for paper 📰\nEnter " +
SCISSORS +
" for scissors ✂️\nChoice:"
);
let choiceVisual = getChoiceVisual(userInput);
if (choiceVisual === INVALIDCHOICE) {
console.clear();
console.log(choiceVisual);
return userChoice();
}
console.log("You choose " + choiceVisual);
if (!confirm("Please confirm your Choice:")) {
console.clear();
return userChoice();
}
return userInput;
}
function generateResultMsg(result) {
switch (result) {
case TIE:
return "It's a tie ⚠️";
case USERWON:
return "You won 🥳";
case COMPUTERWON:
return "Computer won 😭";
}
}
function gameResult(userChoose, computerChoose) {
const resultMsg = generateResultMsg((userChoose - computerChoose + 3) % 3);
console.log(resultMsg);
}
function game() {
const userChoose = userChoice();
const computerChoose = generateComputerChoice();
gameResult(userChoose, computerChoose);
if (confirm("Want to play again❓ : ")) {
console.clear();
game();
}
}
game();