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); } } } }