-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbackupCricketTwoPlayerFull.js
More file actions
246 lines (213 loc) · 5.12 KB
/
backupCricketTwoPlayerFull.js
File metadata and controls
246 lines (213 loc) · 5.12 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
//initializing the readline
const readline = require('readline');
const rl = readline.createInterface({
input : process.stdin,
output : process.stdout
});
//generating random run
const run = function(){
return Math.floor(Math.random()*25);
}
//total run for first innings
const totalRun = function(){
return Math.floor(Math.random()*50)+130;
}
//wickets fallen in the first innings
const totalWicket = function(){
return Math.floor(Math.random()*10);
}
//number of overs left
const overLeft = function(){
if(isWide||isNo){
ball+=2;
}
if(ball==0){
overs--;
ball=6;
}
ball--;
if(ball>=6){
overs++;
ball=0;
}
leftOver=overs+"."+ball;
return leftOver;
}
//reset every stats after innnings over
const resetEverything = function(){
yourRun=0;
overs=10;
ball=0;
wicket=0;
isWide=false;
isNo=false;
}
//match winning condition
const win = function(currentRun){
console.log("it's a",currentRun,"Score:",yourRun+"/"+wicket);
console.log("you scored",yourRun,"/",wicket,"won the match");
process.exit();
}
//wickets fallen till the ball
const wicketDown = function(currentOverLeft){
console.log("Player",(+wicket+1),"is out. Current score:",yourRun-8+"/"+(+wicket+1));
if(!isInningsOver){
console.log("Overs left:",currentOverLeft);
}
yourRun-=8;
wicket++;
if(currentOverLeft=="0.0" || wicket==10){
if(!isInningsOver){
target=yourRun+1;
console.log("\n\nSECOND INNINGS IS STARTING.\n\nTARGET:",target);
console.log("hit enter to start the second innings");
}
if(isInningsOver){
console.log("you lost the match by",target-yourRun-1,"runs");
process.exit();
}
isInningsOver=true;
resetEverything();
return;
//process.exit();
}
if(isInningsOver){
console.log(target-yourRun+" needed to win from " +currentOverLeft);
}
return;
}
//match end by innings over condition
const inningsOver = function(){
console.log("Your score",yourRun+"/"+wicket);
if(isInningsOver){
console.log("you lost the match by",target-yourRun-1,"runs");
process.exit();
}
target=yourRun+1;
if(!isInningsOver){
console.log("\n\nSECOND INNINGS IS STARTING.\n\nTARGET:",target);
console.log("hit enter to start the second innings");
}
isInningsOver=true;
resetEverything();
return;
//process.exit();
}
//wide ball condition
const wideBall = function(){
yourRun-=6;
isWide=true;
let currentOverLeft = overLeft();
console.log("This is a wide ball. Current score:",yourRun+"/"+wicket);
if(!isInningsOver){
console.log("Overs left:",currentOverLeft);
}
if(isInningsOver){
console.log(target-yourRun+" needed to win from " +currentOverLeft);
}
}
//no ball condition
const noBall = function(){
yourRun-=4;
isNo=true;
let currentOverLeft = overLeft();
console.log("This is a no ball. Current score:",yourRun+"/"+wicket);
if(!isInningsOver){
console.log("Overs left:",currentOverLeft);
}
if(isInningsOver){
console.log(target-yourRun+" needed to win from " +currentOverLeft);
}
}
//what happened on current ball
const secondInnings = function(){
if(isInningsOver){
let currentRun=runChance[run()];
let currentOverLeft=overLeft();
yourRun+=currentRun;
//wide ball condition
if(currentRun==7){
wideBall();
isWide=false;
return;
}
//no ball condition
if(currentRun==5){
noBall();
isNo=false;
return;
}
//win condition
if(yourRun>=target){
win(currentRun);
return;
}
//wicket fall on the current ball
if(currentRun==8){
wicketDown(currentOverLeft);
return;
}
//printing current run and wicket
console.log("it's a",currentRun,"score",yourRun+"/"+wicket);
//if over is finished
if(currentOverLeft=="0.0"){
inningsOver();
return;
}
//how much runs and overs are remaining
console.log(target-yourRun+" needed to win from " +currentOverLeft);
}
}
//first innings score
const firstInnings = function(){
if(!isInningsOver){
let currentRun=runChance[run()];
let currentOverLeft=overLeft();
yourRun+=currentRun;
//wide ball condition
if(currentRun==7){
wideBall();
isWide=false;
return;
}
//no ball condition
if(currentRun==5){
noBall();
isNo=false;
return;
}
//wicket fall on the current ball
if(currentRun==8){
wicketDown(currentOverLeft);
return;
}
//printing current run and wicket
console.log("it's a",currentRun,"score",yourRun+"/"+wicket);
console.log("Overs left",currentOverLeft);
//if over is finished
if(currentOverLeft=="0.0"){
inningsOver();
return;
}
}
}
//print opening messages
console.log("MATCH IS GOING TO START\n\nTo begin first innings hit enter");
//initializing variables
let target;
let runChance=[1,2,3,4,6,1,8,2,2,8,4,5,1,2,0,4,6,8,7,0,3,6,0,4,7];
let yourRun=0;
let overs=10;
let ball=0;
let wicket=0;
let isWide=false;
let isNo=false;
let isInningsOver=false;
//taking input for each line
rl.on('line',(input) => {
if(!isInningsOver){
firstInnings();
}else{
secondInnings();
}
});