package kevin.lawrence.bowling;
import java.util.ArrayList;
import java.util.Iterator;
public class Game implements Iterable {
public static final int FRAMES_PER_GAME = 10;
private ArrayList frames;
public Game() {
frames = new ArrayList();
Frame frame = null;
for(int i = 0; i < FRAMES_PER_GAME; i++) {
frame = new Frame(frame, i == FRAMES_PER_GAME - 1);
frames.add(frame);
}
}
public void bowl(int pins) {
// The current frame is the first one that needs more balls
// but is not complete
for(Frame frame : frames){
if(frame.needsMoreBalls()){
boolean isCurrentFrame = ! frame.isComplete();
frame.addBall(pins);
if(isCurrentFrame) {
break;
}
}
}
}
public boolean isGameOver() {
return ! getLastFrame().needsMoreBalls();
}
public Iterator iterator(){
return frames.iterator();
}
public int getScore() {
return getLastFrame().getCumulativeScore();
}
public Frame getLastFrame() {
return frames.get(frames.size() - 1);
}
}