Example #1
0
    public void InitGameScoring()
    {
        status      = GameStatus.waitingStart;
        cell        = 0;
        shot        = 0;
        scoreframes = new ScoringFrame[cellCount];
        for (int i = 0; i < cellCount; ++i)
        {
            scoreframes [i] = new ScoringFrame(false);
        }
        scoreframes [cellCount - 1] = new ScoringFrame(true);


        LinkScoreFrameToTextField();
    }
Example #2
0
 public void CalculateScore()
 {
     totalScore = 0;
     for (int i = 0; i <= cell; ++i)
     {
         ScoringFrame frame = scoreframes [i];
         if (frame.hasScore)
         {
             continue;
         }
         if (i < cellCount - 1)
         {
             if (frame.scores [0] == 10)
             {
                 //current frame strike
                 if (scoreframes [i + 1].scores [0] == -1)
                 {
                     return;
                 }
                 else if (scoreframes [i + 1].scores [0] == 10)
                 {
                     //next frame is strike
                     if (i + 1 == cellCount - 1)
                     {
                         //next frame is last frame
                         if (scoreframes [i + 1].scores [1] == -1)
                         {
                             return;
                         }
                         else
                         {
                             totalScore += 20 + scoreframes [i + 1].scores [1];
                         }
                     }
                     else
                     {
                         //next frame is not last frame
                         if (scoreframes [i + 2].scores [0] == -1)
                         {
                             return;
                         }
                         else
                         {
                             totalScore += 20 + scoreframes [i + 2].scores [0];
                         }
                     }
                 }
                 else if (scoreframes [i + 1].scores [0] > -1 && scoreframes [i + 1].scores [1] > -1)
                 {
                     //next frame is not strike but has scores
                     totalScore += 10 + scoreframes [i + 1].scores [0] + scoreframes [i + 1].scores [1];
                 }
                 else
                 {
                     return;
                 }
                 frame.showScore(totalScore);
             }
             else if (frame.scores [1] > -1 && frame.scores [0] + frame.scores [1] == 10)
             {
                 //current frame spare
                 if (scoreframes [i + 1].scores [0] == -1)
                 {
                     return;
                 }
                 else
                 {
                     totalScore += 10 + scoreframes [i + 1].scores [0];
                 }
                 frame.showScore(totalScore);
             }
             else if (frame.scores [1] > -1)
             {
                 totalScore += frame.scores [0] + frame.scores [1];
                 frame.showScore(totalScore);
             }
             else
             {
                 return;
             }
         }
         else
         {
             if (frame.scores [1] > -1 && frame.scores [0] + frame.scores [1] < 10)
             {
                 totalScore += frame.scores [0] + frame.scores [1];
                 frame.showScore(totalScore);
             }
             else if (frame.scores [2] > -1)
             {
                 totalScore += frame.scores [0] + frame.scores [1] + frame.scores [2];
                 frame.showScore(totalScore);
             }
         }
     }
 }