Exemple #1
0
        public static void CreateAllFramesFromString(this ScoreCard scoreCard)
        {
            var stringFrameScoreArray = scoreCard.StringGame.Split('|').Take(11).ToArray();

            for (var frameNumber = 0; frameNumber < stringFrameScoreArray.Length; frameNumber++)
            {
                var stringFrame  = stringFrameScoreArray[frameNumber];
                var currentFrame = CreateFrame(stringFrame, frameNumber);

                scoreCard.Frames.Add(currentFrame);
            }
        }
Exemple #2
0
        public static void GetTotalFrameScoreIncludingBonus(this ScoreCard scoreCard)
        {
            scoreCard.Score = 0;

            foreach (var currentFrame in scoreCard.Frames)
            {
                if (!currentFrame.IsBonusFrame)
                {
                    scoreCard.ScoreCurrentFrame(currentFrame);
                }
            }
        }
Exemple #3
0
        public static int NextScoringThrow(this ScoreCard scoreCard, int currentFrame)
        {
            var concurrentScores = new List <int>();

            var remainingFrames = scoreCard.Frames.Where(e => e.FrameNumber > currentFrame).ToList();

            remainingFrames.ForEach(frame =>
            {
                concurrentScores.Add(frame.FirstThrow.Score);
                concurrentScores.Add(frame.SecondThrow.Score);
            });

            return(concurrentScores.FirstOrDefault());
        }
Exemple #4
0
        private static void ScoreCurrentFrame(this ScoreCard scoreCard, Frame currentFrame)
        {
            if (currentFrame.HasStrike)
            {
                scoreCard.ScoreStrike(currentFrame);
            }

            else if (currentFrame.SecondThrow.StringThrow.IsSpare())
            {
                scoreCard.ScoreSpare(currentFrame);
            }
            else
            {
                scoreCard.Score += currentFrame.FrameScore;
            }
        }
Exemple #5
0
        public static int NextTwoScoringThrows(this ScoreCard scoreCard, int currentFrame)
        {
            var scoreToAdd      = 0;
            var remainingFrames = scoreCard.Frames.Where(e => e.FrameNumber > currentFrame).OrderBy(frame => frame.FrameNumber).ToList();

            foreach (var frame in remainingFrames)
            {
                scoreToAdd += frame.FirstThrow.Score;

                if (frame.HasStrike && !frame.IsBonusFrame)
                {
                    scoreToAdd += remainingFrames[1].FirstThrow.Score;
                }
                else
                {
                    scoreToAdd += frame.SecondThrow.Score;
                }

                break;
            }

            return(scoreToAdd);
        }
Exemple #6
0
 public static void ReplaceDoublePipeInStringGame(this ScoreCard scoreCard, string stringGame)
 {
     scoreCard.StringGame = stringGame.Replace("||", "|");
 }
Exemple #7
0
        private static void ScoreStrike(this ScoreCard scoreCard, Frame currentFrame)
        {
            var score = currentFrame.FrameScore + scoreCard.NextTwoScoringThrows(currentFrame.FrameNumber);

            scoreCard.Score += score;
        }
Exemple #8
0
 private static void ScoreSpare(this ScoreCard scoreCard, Frame currentFrame)
 {
     scoreCard.Score += currentFrame.FrameScore + scoreCard.NextScoringThrow(currentFrame.FrameNumber);
 }