// all the pins are processed in the functions. Roll(int pins) public int Roll(int Pins) { if (Pins > 10) { return -1; } if (Pins < 0) { return -1; } if (tenFrames.Count == 9) { TenRoll(Pins); return 0; } if (tenFrames.Count == 10) { Program.frames++; return 0; } _roll++; if (_roll % 2 != 0) { _currentFrame = new frame(); _currentFrame.firstRoll = Pins; if (_previousFrame != null) { if (_previousFrame.CheckSpare()) { _previousFrame.setSpare(_currentFrame.firstRoll); } } if (_currentFrame.CheckStrike()) { _roll += 1; _previousFrame = _currentFrame; tenFrames.Add(_currentFrame); } } else { _currentFrame.secondRoll = Pins; if (_previousFrame != null) { if (_previousFrame.CheckStrike()) { _previousFrame.setStrike(_currentFrame.firstRoll + _currentFrame.secondRoll); } } _previousFrame = _currentFrame; tenFrames.Add(_currentFrame); } Program.frames = tenFrames.Count; return 0; }
//function works when the frame is in 10 void TenRoll(int Pins) { _roll++; if (_roll % 3 == 1) { _currentFrame = new tenframe(); _currentFrame.firstRoll = Pins; if (_previousFrame != null) { if (_previousFrame.CheckSpare()) { _previousFrame.setSpare(_currentFrame.firstRoll); } } if (_currentFrame.CheckStrike()) { _roll += 1; } } if (_roll % 3 == 2) { _currentFrame.secondRoll = Pins; if (_previousFrame != null) { if (_previousFrame.CheckStrike()) { _previousFrame.setStrike(_currentFrame.firstRoll + _currentFrame.secondRoll); } } if (!(_currentFrame.CheckSpare() || _currentFrame.CheckStrike())) { tenFrames.Add(_currentFrame); Program.frames = tenFrames.Count; } } if (_roll % 3 == 0) { if (_currentFrame.CheckSpare() || _currentFrame.CheckStrike()) { _currentFrame.thirdRoll = Pins; _previousFrame = _currentFrame; tenFrames.Add(_currentFrame); Program.frames = tenFrames.Count; } } }