package main;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
public class BowlingManager {
List mListFrmae = new ArrayList();
final int TOTAL_FRAME_COUNT = 10;
final int STRIKE_SCORE = 10;
final int MAXIMUM_FRAME = 12;
int mCurrentFrame = 0;
boolean mIsEnd = false;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
public boolean isEnd() {
return mIsEnd;
}
public void playFrame() {
// TODO Auto-generated method stub
mCurrentFrame++;
Frame f = new Frame(mCurrentFrame);
mListFrmae.add(f);
// ask first score
int firstScore = getScore(mCurrentFrame + " Frmae, First Score:");
f.setFirstScore(firstScore, mListFrmae);
// if not strike, ask second score
if (firstScore != STRIKE_SCORE) {
int secondScore = getScore(mCurrentFrame + " Frame, Second Score:");
f.setSecondScore(secondScore, mListFrmae);
}
// 종료를 판단한다.
if (mCurrentFrame >= TOTAL_FRAME_COUNT) {
if (mCurrentFrame == TOTAL_FRAME_COUNT){
if (f.mIsSpare || f.mIsStrike) {
mIsEnd = false;
}
else {
setEndFlag();
}
}
else if (mCurrentFrame == TOTAL_FRAME_COUNT + 1) {
if (f.mIsStrike) {
mIsEnd = false;
}
else {
setEndFlag();
}
}
else{
setEndFlag();
}
}
}
private void setEndFlag() {
mIsEnd = true;
}
private int getScore(String msg) {
System.out.println(msg);
int score = 0;
try{
score = Integer.parseInt(br.readLine());
}catch(NumberFormatException nfe){
System.err.println("Invalid Format!");
}catch(IOException e){
System.err.println("Read Error");
}
return score;
}
public void printScore() {
int totalScore = 0;
for (int i =0; i < mListFrmae.size(); i++){
Frame f = mListFrmae.get(i);
String currentScore = "";
if (f.mIsStrike) {
currentScore = "X";
} else if (f.mIsSpare) {
currentScore = f.mFirstScore + "-/";
} else {
currentScore = f.mFirstScore + "-" + f.mSecondScore;
}
String totalScoreShow = "";
totalScore += f.mFirstScore + f.mSecondScore + f.mAdditionalPoint;
totalScoreShow = totalScore + "";
if (f.mAddPointCount != 0) {
totalScoreShow = "";
}
if (f.mFrame <= TOTAL_FRAME_COUNT) {
System.out.println(f.mFrame + " Frame:\t" + currentScore + "\tTotal:"+totalScoreShow);
}
}
}
}