Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dob Ward Bowling Game #15

Open
wants to merge 59 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
59 commits
Select commit Hold shift + click to select a range
3f23b70
Create Test.java
dkw1492 Mar 9, 2018
f67f26e
Create src
dkw1492 Mar 9, 2018
66b54f2
Delete src
dkw1492 Mar 9, 2018
cc8c6ca
Create StrikesSparesAndMisses.java
dkw1492 Mar 9, 2018
d0ddb28
Delete Test.java
dkw1492 Mar 9, 2018
4d975ce
Create BowlingGameTest.java
dkw1492 Mar 9, 2018
7129613
test
Mar 10, 2018
59ced8e
test
Mar 10, 2018
249cb00
test
Mar 10, 2018
b43855b
testing
Mar 10, 2018
d918d43
test
Mar 10, 2018
b80f67d
test
Mar 10, 2018
dab4065
Create bowling
dkw1492 Mar 10, 2018
67c135c
test
Mar 10, 2018
176b898
Delete bowling
dkw1492 Mar 10, 2018
949dcf2
test
Mar 10, 2018
929488c
Merge branch 'master' of https://github.com/dkw1492/splits-happen.git
Mar 10, 2018
cc71b88
Create StrikesSparesAndMisses.java
dkw1492 Mar 10, 2018
ff02fae
Merge branch 'master' of https://github.com/dkw1492/splits-happen.git
Mar 10, 2018
c0b45a4
Create bowling
dkw1492 Mar 10, 2018
d3d8d8b
Merge branch 'master' of https://github.com/dkw1492/splits-happen.git
Mar 10, 2018
5746c03
delete
Mar 10, 2018
c81f4de
delete
Mar 10, 2018
9415fc7
Create bowling
dkw1492 Mar 10, 2018
5f5ebe1
Delete bowling
dkw1492 Mar 10, 2018
a8b4e1f
Create StrikesSparesAndMisses.java
dkw1492 Mar 10, 2018
9502373
new test folder and test class
Mar 10, 2018
1b69b66
Delete .project
dkw1492 Mar 10, 2018
eac126f
New Project
Mar 10, 2018
6d5d604
Delete StrikesSparesAndMisses.java
dkw1492 Mar 10, 2018
9aadc98
Delete StrikesSparesAndMissesTest.java
dkw1492 Mar 10, 2018
05e1091
Delete .classpath
dkw1492 Mar 10, 2018
b7172fe
Delete .gitignore
dkw1492 Mar 10, 2018
fe1d60e
Delete .project
dkw1492 Mar 10, 2018
506dd3d
New class
Mar 10, 2018
3cafdf5
Merge branch 'master' of https://github.com/dkw1492/splits-happen.git
Mar 10, 2018
40653d7
New Class
Mar 10, 2018
66bd2b0
garbage
Mar 10, 2018
ff2e9dd
Changes
Mar 10, 2018
6a8c2c0
Model each Frame in the game
Mar 12, 2018
29b6b65
Frame Analyzers
Mar 12, 2018
2f18347
Zero Frame
Mar 12, 2018
5d71b3c
Update FrameZero.java
dkw1492 Mar 12, 2018
acc509e
Update FrameMiss.java
dkw1492 Mar 12, 2018
f2985cc
Frame Analyzer
Mar 12, 2018
9831106
Regular Frame Analyzer
Mar 12, 2018
5d9f02d
Update AnalyzeRegularFrame.java
dkw1492 Mar 12, 2018
470e9b1
Merge branch 'master' of https://github.com/dkw1492/splits-happen.git
Mar 12, 2018
0de6fd9
Normal Frame Analyzer
Mar 12, 2018
a58d3bc
Zero Frame Analyzer
Mar 12, 2018
1a0159e
strike frame analyzer test
Mar 12, 2018
c5acc9e
Spare Frame analyzer
Mar 12, 2018
eb4ee3d
test class
Mar 12, 2018
6fdf303
Main class
Mar 12, 2018
06159e9
input data processor
Mar 12, 2018
c7208f2
made changes to variable names
Mar 12, 2018
10222b1
StrikesSparesAndMissesGame class
Mar 12, 2018
2917028
changed variable names
Mar 12, 2018
bdd9cc6
Update StrikesSparesAndMissesTest.java
dkw1492 Mar 14, 2018
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 37 additions & 0 deletions BowlingGameProject/.classpath
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" output="target/classes" path="src/main/java">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="src" output="target/test-classes" path="src/test/java">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/>
<classpathentry kind="output" path="target/classes"/>
</classpath>
1 change: 1 addition & 0 deletions BowlingGameProject/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/target/
23 changes: 23 additions & 0 deletions BowlingGameProject/.project
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>BowlingGameProject</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.m2e.core.maven2Builder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.m2e.core.maven2Nature</nature>
</natures>
</projectDescription>
5 changes: 5 additions & 0 deletions BowlingGameProject/.settings/org.eclipse.jdt.core.prefs
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
org.eclipse.jdt.core.compiler.compliance=1.5
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
org.eclipse.jdt.core.compiler.source=1.5
4 changes: 4 additions & 0 deletions BowlingGameProject/.settings/org.eclipse.m2e.core.prefs
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
activeProfiles=
eclipse.preferences.version=1
resolveWorkspaceProjects=true
version=1
7 changes: 7 additions & 0 deletions BowlingGameProject/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>1.5</groupId>
<artifactId>1.5</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>BowlingGameProject</name>
</project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
package com.dkward.bowling;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;


import com.dkward.bowling.analyzers.AnalyzeRegularFrame;
import com.dkward.bowling.analyzers.AnalyzeSpareFrame;
import com.dkward.bowling.analyzers.AnalyzeStrikeFrame;
import com.dkward.bowling.analyzers.AnalyzeZeroFrame;
import com.dkward.bowling.analyzers.FrameAnalyzer;
import com.dkward.bowling.analyzers.GameDataProcessor;
import com.dkward.bowling.frame.BowlingFrame;

public class StrikesSparesAndMisses {


private GameDataProcessor dataProcessor = null;

public StrikesSparesAndMisses() {

startToReadTheData();
}


public int getScore(String rolls) {
List<BowlingFrame> frames = dataProcessor.getTheInputData(rolls);
return getScore(frames);
}

private void startToReadTheData() {
List<FrameAnalyzer> analyzerList = new ArrayList<FrameAnalyzer>();
analyzerList.add(new AnalyzeStrikeFrame());
analyzerList.add(new AnalyzeSpareFrame());
analyzerList.add(new AnalyzeRegularFrame());
analyzerList.add(new AnalyzeZeroFrame());
dataProcessor = new GameDataProcessor(analyzerList);
}


private int getScore(final List<BowlingFrame> frames) {
StrikesSparesAndMissesGame bowlingGame = createBowlingGame(frames);

return bowlingGame.getTheScore();
}

private StrikesSparesAndMissesGame createBowlingGame(List<BowlingFrame> frames) {
StrikesSparesAndMissesGame bowlingGame = new StrikesSparesAndMissesGame();

for (BowlingFrame frame : frames) {
bowlingGame.addBowlingFrame(frame);
}
return bowlingGame;
}

}

Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
package com.dkward.bowling;

import java.util.ArrayList;
import java.util.List;

import com.dkward.bowling.frame.BowlingFrame;

public class StrikesSparesAndMissesGame {

private static final int number_of_frames = 10;

private List<BowlingFrame> bowlingFrames = new ArrayList<BowlingFrame>();


public int getTheScore() {

int theScore = 0;

for (int mostCurrentFrame = 0; mostCurrentFrame < number_of_frames; mostCurrentFrame++) {

BowlingFrame frame = bowlingFrames.get( mostCurrentFrame );
theScore = bumpTheScore( theScore, frame );
if ( nextScores ( frame ) ) {
theScore = duplicateNextScores( theScore, mostCurrentFrame, frame );
}
}
return theScore;
}

private int duplicateNextScores(int score, int currentFrame, BowlingFrame frame) {
final int topNextFrame = currentFrame + 1;
int nextFrame = topNextFrame;
while (nextFrame < (topNextFrame + frame.getDupsIfAny())) {
score = bumpTheScore(score, bowlingFrames.get(nextFrame));
if (bowlingFrames.get(nextFrame).getDupsIfAny() == 1 && frame.getDupsIfAny() != 1) {
nextFrame++;
}
nextFrame++;
}
return score;
}


public void addBowlingFrame(BowlingFrame frame) {
bowlingFrames.add(frame);
}

private int bumpTheScore(int score, BowlingFrame frame) {
return score + frame.getTheFrameScore();
}

private boolean nextScores(BowlingFrame frame) {
return frame.sameAsNextFrame() && frame.getDupsIfAny() > 0;
}



}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.dkward.bowling.analyzers;

import com.dkward.bowling.frame.BowlingFrame;

public class AnalyzeMissFrame implements FrameAnalyzer{

public BowlingFrame checckTheFrame(String bowlingFrame) {
// TODO Auto-generated method stub
return null;
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package com.dkward.bowling.analyzers;

import com.dkward.bowling.frame.BowlingFrame;
import com.dkward.bowling.frame.RegularFrame;

public class AnalyzeRegularFrame implements FrameAnalyzer{


private static final String nothing = "-";

public BowlingFrame checckTheFrame(String bowlingFrame) {

// TODO Auto-generated method stub
BowlingFrame result = null;
if (isItAValidFrame(bowlingFrame)) {
int theFirstRoll = getTheScore(bowlingFrame.charAt(0) + "");
int theSecondRoll = getTheScore(bowlingFrame.charAt(1) + "");
result = getFrame(theFirstRoll, theSecondRoll);
}
return result;
}

private boolean isItAValidFrame(String frame) {
return frame.length() == 2;
}

private BowlingFrame getFrame(int theFirstRoll, int theSecondRoll) {
return new RegularFrame(theFirstRoll, theSecondRoll);
}


private int getTheScore(String partialFrame) {
int score = 0;
if (!nothing.equals(partialFrame)) {
score = Integer.parseInt(partialFrame);
}
return score;
}


}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package com.dkward.bowling.analyzers;

import com.dkward.bowling.frame.BowlingFrame;
import com.dkward.bowling.frame.FrameSpare;

public class AnalyzeSpareFrame implements FrameAnalyzer{

private static final String a_spare = "/";


private boolean isValidFrame(String frame) {
return a_spare.equals(frame.charAt(1) + "");
}

public BowlingFrame checckTheFrame(String bowlingFrame) {

// TODO Auto-generated method stub
BowlingFrame result = null;
if (isValidFrame(bowlingFrame)) {
result = new FrameSpare();
}
return result;
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package com.dkward.bowling.analyzers;

import com.dkward.bowling.frame.BowlingFrame;
import com.dkward.bowling.frame.FrameStrike;

public class AnalyzeStrikeFrame implements FrameAnalyzer{


private static final String a_strike = "X";

public BowlingFrame checckTheFrame(String frame) {
BowlingFrame result = null;
if (a_strike.equals(frame)) {
result = new FrameStrike();
}
return result;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package com.dkward.bowling.analyzers;

import com.dkward.bowling.frame.BowlingFrame;
import com.dkward.bowling.frame.FrameZero;

public class AnalyzeZeroFrame implements FrameAnalyzer{

private static final String zero = "--";


public BowlingFrame checckTheFrame(String frame) {
BowlingFrame result = null;
if (isItAValidFrame(frame)) {
result = new FrameZero();
}
return result;
}

private boolean isItAValidFrame(String frame) {
return zero.equals(frame);
}


}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package com.dkward.bowling.analyzers;

import com.dkward.bowling.frame.BowlingFrame;

public interface FrameAnalyzer {

BowlingFrame checckTheFrame(String bowlingFrame);

}
Loading