private List <Frame> CalculateFrames() { var frames = new List <Frame>(); var rollCounter = new RollCounter(2, 0); for (int i = 0; i < NumberOfFrames; i++) { if (IsStrike(rollCounter)) { frames.Add(new Strike(rollCounter.Index, _rolls)); } else if (IsSpare(rollCounter)) { frames.Add(new Spare(rollCounter.Index, _rolls)); } else { frames.Add(new Frame(rollCounter.Index, _rolls)); } rollCounter = rollCounter.IncreaseRollIndex(IsStrike(rollCounter)); } return(frames); }
private bool IsStrike(RollCounter rollCounter) { return(_rolls[rollCounter.Index] == NumberOfPins); }
private bool IsSpare(RollCounter rollIndex) { return(_rolls[rollIndex.Index] + _rolls[rollIndex.Index + 1] == NumberOfPins); }