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()); }
/// <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]); }