Skip to content

Commit

Permalink
more refactoring
Browse files Browse the repository at this point in the history
  • Loading branch information
veritywong committed May 28, 2023
1 parent 1c9009a commit 1159606
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 61 deletions.
107 changes: 53 additions & 54 deletions docs/scorecard.js
Original file line number Diff line number Diff line change
@@ -1,83 +1,82 @@
class Scorecard {

constructor() {
this.frames = []
constructor() {
this.frames = []

}
}

calculateScore() {
calculateScore() {
let sum = 0;

for (let i = 0; i < this.frames.length; i++) {
let currentFrame = this.frames[i]
let nextFrame = this.frames[i + 1]
let nextNextFrame = this.frames[i + 2]

sum += this.frameScore(currentFrame)

// Bonuses:
// when strike or spare on final frame
if (currentFrame === this.frames[10] && nextFrame === undefined && nextNextFrame === undefined ) {
sum -= this.frameScore(currentFrame);
}
// when strike
else if (currentFrame.length < 2 && nextFrame.length === 2) {
sum += this.addStrikeBonus(nextFrame);
}
// when strikes in a row
else if (currentFrame.length < 2 && nextFrame.length < 2) {
sum += this.addStrikesInARowBonus(nextFrame, nextNextFrame);
}
// when spare
else if (this.frameScore(currentFrame) === 10 && currentFrame.length === 2 ) {
sum += nextFrame[0];
}
}
return sum;
for (let i = 0; i < this.frames.length; i++) {
let currentFrame = this.frames[i]
let nextFrame = this.frames[i + 1]
let nextNextFrame = this.frames[i + 2]

sum += this.frameScore(currentFrame)

// Bonuses:
// when strike or spare on final frame
if (currentFrame === this.frames[10]) {
sum -= this.frameScore(currentFrame);
}
// when strike
else if (currentFrame.length < 2 && nextFrame.length === 2) {
sum += this.addStrikeBonus(nextFrame);

}
// when strikes in a row
else if (currentFrame.length < 2 && nextFrame.length < 2) {
sum += this.addStrikesInARowBonus(nextFrame, nextNextFrame);

}
// when spare
else if (this.frameScore(currentFrame) === 10 && currentFrame.length === 2 ) {
sum += nextFrame[0];
}
}
return sum;


}
}

addFrame(roll1, roll2) {
if (roll1 < 10) {
this.frames.push([roll1, roll2]);
if (roll1 < 10) {
this.frames.push([roll1, roll2]);

// adds bonus rolls as frame if frame 10 is a strike or spare
} else if (roll1 === 10 && this.frames.length === 10) {

// adds bonus rolls as frame if frame 10 is a strike or spare
} else if (roll1 === 10 && this.frames.length === 10) {
this.frames.push([roll1, roll2]);
} else if (roll1 === 10 ) {
this.frames.push([roll1]);
}
} else if (roll1 === 10 ) {
this.frames.push([roll1]);
}
}

frameScore(frame) {
let sum = 0;
let sum = 0;

for (let j = 0 ; j < frame.length; j++) {
sum += frame[j];
}
return sum;
for (let j = 0 ; j < frame.length; j++) {
sum += frame[j];
}
return sum;
}

addStrikeBonus(nextFrame) {
let sum = 0;
let sum = 0;

sum += nextFrame[0];
sum += nextFrame[1];
sum += nextFrame[0];
sum += nextFrame[1];

return sum;
return sum;
}

addStrikesInARowBonus(nextFrame, nextNextFrame) {
let sum = 0;
let sum = 0;

sum += nextFrame[0];
sum += nextNextFrame[0];
sum += nextFrame[0];
sum += nextNextFrame[0];

return sum;
return sum;
}

}
Expand Down
7 changes: 0 additions & 7 deletions tests/scorecard.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ describe('Scorecard', () => {
it('adds bonus points when strike', () => {
let scorecard = new Scorecard()

expect(scorecard.calculateScore()).toEqual(0)
scorecard.addFrame(10, 0)
scorecard.addFrame(2, 2)
expect(scorecard.calculateScore()).toEqual(18)
Expand All @@ -24,7 +23,6 @@ describe('Scorecard', () => {
it('adds bonus points when two strikes in a row', () => {
let scorecard = new Scorecard()

expect(scorecard.calculateScore()).toEqual(0)
scorecard.addFrame(10, 0)
scorecard.addFrame(10, 0)
scorecard.addFrame(2, 2)
Expand All @@ -35,7 +33,6 @@ describe('Scorecard', () => {
it('adds bonus points for spare', () => {
let scorecard = new Scorecard()

expect(scorecard.calculateScore()).toEqual(0)
scorecard.addFrame(1, 9)
scorecard.addFrame(1, 3)
expect(scorecard.calculateScore()).toEqual(15)
Expand All @@ -45,7 +42,6 @@ describe('Scorecard', () => {
it('adds up to 0 for gutter game', () => {
let scorecard = new Scorecard()

expect(scorecard.calculateScore()).toEqual(0)
scorecard.addFrame(0, 0)
scorecard.addFrame(0, 0)
scorecard.addFrame(0, 0)
Expand All @@ -64,7 +60,6 @@ describe('Scorecard', () => {
it('adds up to 300 because perfect score', () => {
let scorecard = new Scorecard()

expect(scorecard.calculateScore()).toEqual(0)
scorecard.addFrame(10, 0)
scorecard.addFrame(10, 0)
scorecard.addFrame(10, 0)
Expand All @@ -84,7 +79,6 @@ describe('Scorecard', () => {
it('allows bonus points for spare on final frame', () => {
let scorecard = new Scorecard()

expect(scorecard.calculateScore()).toEqual(0)
scorecard.addFrame(10, 0)
scorecard.addFrame(10, 0)
scorecard.addFrame(10, 0)
Expand All @@ -104,7 +98,6 @@ describe('Scorecard', () => {
it('allows bonus points for spare on final frame', () => {
let scorecard = new Scorecard()

expect(scorecard.calculateScore()).toEqual(0)
scorecard.addFrame(1, 4)
scorecard.addFrame(4, 5)
scorecard.addFrame(6, 4)
Expand Down

0 comments on commit 1159606

Please sign in to comment.