-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbowling.js
More file actions
100 lines (72 loc) · 1.62 KB
/
bowling.js
File metadata and controls
100 lines (72 loc) · 1.62 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
const ScoreCard = require('./scoreCard');
class Game {
constructor(rolls) {
this.rolls = rolls;
this.frames = getFrames(rolls);
}
displayResults(){
console.log(
'Rolls: \t'+ this.rolls + '\n '+
getSimpleTotal(this.frames) + ' ' +
accountForSpares(this.frames) + ' ' +
accountForStrikes(this.frames));
}
displayFrames(){
for(var i in this.frames){
console.log(i);
console.log(this.frames[i]);
}
}
score(){
var simpleTotal = getSimpleTotal(this.frames);
var spareBonus = accountForSpares(this.frames);
var strikeBonus = accountForStrikes(this.frames);
return simpleTotal + spareBonus+ strikeBonus;
}
}
module.exports = Game;
function getFrames2(rolls){
var frames = [];
var ballNo = 0;
while(frames.length<10){//gives first 9 frames, deal with 10th separately
if(rolls[ballNo] === 10){
frames.push(new Frame(10,0));
ballNo++;
}
else {
frames.push(new Frame(rolls[ballNo],rolls[ballNo + 1]));
ballNo += 2;
}
}
return frames;
}
function getSimpleTotal(frames){
var total = 0;
for(var i=0; i<frames.length; i++){
total += frames[i].total;
}
return total;
}
function accountForSpares(frames){
var spareBonus = 0;
for(var i=0; i<9; i++){
if(frames[i].isSpare){
spareBonus += frames[i+1].roll1;
}
}
return spareBonus;
}
function accountForStrikes(frames){
var strikeBonus = 0;
for(var i=0; i<9; i++){
if(frames[i].isStrike){
if(frames[i+1].isStrike){
strikeBonus += frames[i+1].roll1 + frames[i+2].roll1;
}
else{
strikeBonus += frames[i+1].roll1 + frames[i+1].roll2;
}
}
}
return strikeBonus;
}