forked from rocketacademy/basics-scissors-paper-stone
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathscript.js
More file actions
269 lines (251 loc) · 7.68 KB
/
script.js
File metadata and controls
269 lines (251 loc) · 7.68 KB
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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
//Create a basic version of Scissors Paper Stone where the user inputs one of Scissors, Paper, or Stone, the program internally randomly chooses scissors, paper, or stone, and the program outputs whether the user won, the program won, or it's a draw. Rules: scissors beats paper, paper beats stone, and stone beats scissors. If both parties choose the same object, it's a draw.
//Add state to your program such that it keeps track of the number of times the user has won and the number of times the computer has won. Output this win-loss record in a format you like in the program output. You can also output the number of draws and/or each party's winning percentage if you'd like.
var userID;
var gameMode = "Input User Name";
var lastWinningPlayer = "";
// Win-Loss Record Variables
var userWinCount = 0;
var userDrawCount = 0;
var userPlayCount = 0;
var userLoseCount = 0;
var userwinningPercentage = 0;
// Game Options
var Scissors = "Scissors";
var Paper = "Paper";
var Stone = "Stone";
// Game Mode
var Normal = "Normal";
var Reversed = "Reversed";
var Korean = "Korean";
var main = function (input) {
// twist.
var gameModeNumber = generateNumber(12);
console.log("Game Mode Number: ", gameModeNumber);
//Change game mode
if (input == Reversed || (gameModeNumber > 10 && gameMode == Normal)) {
gameMode = Reversed;
return (myOutputValue = "You've been UNO REVERSED!");
} else if (input == Normal || (gameModeNumber > 9 && gameMode == Reversed)) {
gameMode = Normal;
return (myOutputValue = "You've been UNO REVERSED!");
} else if (input == Korean) {
gameMode = Korean;
return (myOutputValue = "Annyeonghaseyo~ Time for muk-jji-ppa!");
}
console.log("Game Mode: ", gameMode);
//Begin game after userID has input
if (userID != undefined) {
var canContinue = validateUserInput(input);
//Validate User's input - cannot continue
if (!canContinue) {
myOutputValue = "Try again by inputting either: Scissors, Paper, Stone.";
}
//Validate User's input - can continue
if (canContinue) {
var ComputerNumber = generateNumber(3);
var ComputerGuess = assignSPS(ComputerNumber);
// Tabulate Player Count
userPlayCount = userPlayCount + 1;
if (gameMode == Normal) {
myOutputValue = compareSPS(input, ComputerGuess);
}
if (gameMode == Reversed) {
myOutputValue = reverseCompareSPS(input, ComputerGuess);
}
if (gameMode == Korean) {
myOutputValue = compareMJP(input, ComputerGuess);
}
}
return (myOutputValue += tabulateStats());
}
//Input userID (first time input)
if (gameMode == "Input User Name") {
userID = input;
gameMode = Normal;
var myOutputValue =
input +
", you are now ready to play Scissors, Paper, Stone with me.<br >Please input your guess above to begin.<br ><br >If you are feeling adventurous, input Reversed or Korean for other game modes.";
}
return myOutputValue;
};
//Generate Number for Computer
var generateNumber = function (max) {
var estRandomNumber = Math.random() * max;
var randomInteger = Math.floor(estRandomNumber);
var randomNumber = randomInteger + 1;
return randomNumber;
};
//Assign Scissors, Paper, Stone
var assignSPS = function (Number) {
if (Number == 1) {
return Scissors;
}
if (Number == 2) {
return Paper;
}
if (Number == 3) {
return Stone;
}
};
//Compare User Input & Computer Guess
var compareSPS = function (UserInput, ComputerInput) {
//IF Draw
if (UserInput == ComputerInput) {
userDrawCount = userDrawCount + 1;
var gameOutput =
"Draw! You chose " +
UserInput +
" and the Computer chose " +
ComputerInput +
".";
}
//IF Lose
if (
(UserInput == Scissors && ComputerInput == Stone) ||
(UserInput == Paper && ComputerInput == Scissors) ||
(UserInput == Stone && ComputerInput == Paper)
) {
userLoseCount = userLoseCount + 1;
gameOutput =
"You lose! You chose " +
UserInput +
" and the Computer chose " +
ComputerInput +
".";
}
//IF Win
if (
(UserInput == Scissors && ComputerInput == Paper) ||
(UserInput == Paper && ComputerInput == Stone) ||
(UserInput == Stone && ComputerInput == Scissors)
) {
userWinCount = userWinCount + 1;
gameOutput =
"You win! You chose " +
UserInput +
" and the Computer chose " +
ComputerInput +
".";
}
return gameOutput;
};
//Reverse-Compare User Input & Computer Guess
var reverseCompareSPS = function (UserInput, ComputerInput) {
//IF Draw
if (UserInput == ComputerInput) {
userDrawCount = userDrawCount + 1;
var gameOutput =
"Draw! You chose " +
UserInput +
" and the Computer chose " +
ComputerInput +
".";
}
//IF Win
if (
(UserInput == Scissors && ComputerInput == Stone) ||
(UserInput == Paper && ComputerInput == Scissors) ||
(UserInput == Stone && ComputerInput == Paper)
) {
userWinCount = userWinCount + 1;
gameOutput =
"You reverse-Win! You chose " +
UserInput +
" and the Computer chose " +
ComputerInput +
".";
}
//IF Lose
if (
(UserInput == Scissors && ComputerInput == Paper) ||
(UserInput == Paper && ComputerInput == Stone) ||
(UserInput == Stone && ComputerInput == Scissors)
) {
userLoseCount = userLoseCount + 1;
gameOutput =
"You reverse-Lose! You chose " +
UserInput +
" and the Computer chose " +
ComputerInput +
".";
}
return gameOutput;
};
// Korean muk-jji-ppa
var compareMJP = function (UserInput, ComputerInput) {
//IF Lose
if (
(UserInput == Scissors && ComputerInput == Stone) ||
(UserInput == Paper && ComputerInput == Scissors) ||
(UserInput == Stone && ComputerInput == Paper)
) {
lastWinningPlayer = "Computer";
gameOutput =
"Muk-jji-ppa! You chose " +
UserInput +
" and the Computer chose " +
ComputerInput +
".";
}
//IF Win
else if (
(UserInput == Scissors && ComputerInput == Paper) ||
(UserInput == Paper && ComputerInput == Stone) ||
(UserInput == Stone && ComputerInput == Scissors)
) {
lastWinningPlayer = userID;
gameOutput =
"Muk-jji-ppa! You chose " +
UserInput +
" and the Computer chose " +
ComputerInput +
".";
}
//IF Draw
else if (UserInput == ComputerInput && lastWinningPlayer == userID) {
userWinCount = userWinCount + 1;
lastWinningPlayer == "";
var gameOutput =
"You Win! You chose " +
UserInput +
" and the Computer chose " +
ComputerInput +
", and you won the previous round too.";
} else if (UserInput == ComputerInput && lastWinningPlayer == "Computer") {
userLoseCount = userLoseCount + 1;
lastWinningPlayer = "";
var gameOutput =
"You lost! You chose " +
UserInput +
" and the Computer chose " +
ComputerInput +
", and you lost the previous round too.";
}
return gameOutput;
};
//Validate User Input
var validateUserInput = function (UserInput) {
var flag = UserInput == Scissors || UserInput == Paper || UserInput == Stone;
return flag;
};
//Tabulate Win-Loss Stats
var tabulateStats = function () {
var userWinningPercentage =
((userWinCount + userDrawCount * 0.5) / userPlayCount) * 100;
console.log("User winning percentage:", userWinningPercentage);
var userWinningStatistics =
"<br ><br >" +
userID +
"'s Game Statistics:<br > Play Count: " +
userPlayCount +
"<br >Win Count: " +
userWinCount +
"<br >Lose Count: " +
userLoseCount +
"<br >Draw Count: " +
userDrawCount +
"<br >Winning Percentage: " +
userWinningPercentage.toFixed(1) +
"%";
return userWinningStatistics;
};