package main; import java.util.List; public class Frame { int mFrame; int mFirstScore; int mSecondScore; int mAdditionalPoint; int mAddPointCount = 0; final int ADD_POINT_STRIKE = 2; final int ADD_POINT_SPARE = 1; boolean mIsStrike = false; boolean mIsSpare = false; final int STRIKE_SCORE = 10; public Frame(int currentFrame) { mFrame = currentFrame; } public void setFirstScore(int firstScore) { mFirstScore = firstScore; if (mFirstScore == STRIKE_SCORE) { mIsStrike = true; mAddPointCount = ADD_POINT_STRIKE; } } public void setSecondScore(int secondScore) { mSecondScore = secondScore; if (mIsStrike == false && mFirstScore + mSecondScore == STRIKE_SCORE) { mIsSpare = true; mAddPointCount = ADD_POINT_SPARE; } } public int getFirstScore() { return mFirstScore; } public void setFirstScore(int firstScore, List mListFrmae) { // TODO Auto-generated method stub setFirstScore(firstScore); Frame beforeFrame = getBeforeFrame(mListFrmae, 1); if (beforeFrame == null) return; if (beforeFrame.mIsSpare) { beforeFrame.addAdditionalPoint(firstScore); } else if (beforeFrame.mIsStrike){ beforeFrame.addAdditionalPoint(firstScore); Frame b2Frame = getBeforeFrame(mListFrmae, 2); if (b2Frame == null) return; if (b2Frame.mIsStrike) { b2Frame.addAdditionalPoint(firstScore); } } } private Frame getBeforeFrame(List mListFrmae, int diff) { if (mListFrmae.size() >= diff + 1) { return mListFrmae.get(mListFrmae.size() - (diff+1)); } return null; } private void addAdditionalPoint(int addScore) { mAdditionalPoint += addScore; mAddPointCount += -1; } public void setSecondScore(int secondScore, List mListFrmae) { // TODO Auto-generated method stub setSecondScore(secondScore); Frame beforeFrame = getBeforeFrame(mListFrmae, 1); if (beforeFrame == null) return; if (beforeFrame.mIsStrike) { beforeFrame.addAdditionalPoint(secondScore); } } }