Exemplo n.º 1
0
        public override string ToString()
        {
            // | 1      |X  |9/ |5-
            // |        |20 |35 |40
            //
            var sb = new StringBuilder();

            sb.Append($"| {playerNumber} |");
            foreach (var frame in Frames)
            {
                string frameOutput = string.Empty;
                foreach (var score in frame.Scores)
                {
                    var output = string.Empty;
                    switch (score)
                    {
                    case null:
                        output = " ";
                        break;

                    case 10:
                        output = "X";
                        break;

                    case 0:
                        output = "-";
                        break;

                    default:
                        output = score.ToString();
                        break;
                    }
                    frameOutput += output;
                }
                if (frame.Scores[0] > 0 && (frame.Scores[0] + frame.Scores[1]) == MAX_FRAME_SCORE)
                {
                    var result = frameOutput.ToCharArray();
                    result[1]   = '/';
                    frameOutput = new string(result);
                }
                sb.Append(frameOutput.PadRight(3));
                sb.Append("|");
            }
            sb.Append(Environment.NewLine);
            sb.Append($"|   |");
            foreach (var frame in Frames)
            {
                if (frame.Scores.All(x => x == null))
                {
                    sb.Append("   |");
                }
                sb.Append(Frames.Take(Frames.IndexOf(frame) + 1).Sum(x => x.Score).ToString().PadRight(3));
                sb.Append("|");
            }
            sb.Append(Environment.NewLine);
            sb.Append("==============================================================================================================");
            sb.Append(Environment.NewLine);
            return(sb.ToString());
        }
Exemplo n.º 2
0
        /// <summary>
        /// Returns the next Frame in sequence
        /// </summary>
        /// <param name="Frame"></param>
        /// <returns></returns>
        public Frame GetNextFrame(Frame Frame)
        {
            if (Frame == null)
            {
                return(null);
            }
            if (!Frames.Contains(Frame))
            {
                return(null);
            }

            int i          = Frames.IndexOf(Frame);
            int FrameIndex = i + 1;

            if (FrameIndex > Frames.Count - 1)
            {
                return(null);
            }

            return(Frames[FrameIndex]);
        }