public void AddFrame(LastFrame frame) // Додавання останнього фрейму { if (frames.Count == 9) { lastFrame = frame; isLast = true; if (frames[8].IsSpare()) { frames[8].ResetScore(lastFrame.GetScoreFirst()); } else if (frames[6].IsStrike() && frames[7].IsStrike() && frames[8].IsStrike()) { frames[6].SetScore(30); frames[7].ResetScore(lastFrame.GetScoreFirst()); frames[8].ResetScore(lastFrame.GetScore()); } else if (frames[7].IsStrike() && frames[8].IsStrike()) { frames[7].ResetScore(lastFrame.GetScoreFirst()); frames[8].ResetScore(lastFrame.GetScore()); } else if (frames[8].IsStrike()) { frames[8].ResetScore(lastFrame.GetScore()); } } }
public void ShowScore() // Виведення результатів гравця { int total = 0; Console.Write("{0, -3}| {1, -20}|", id, name); foreach (Frame fr in frames) { if (fr.IsSplit()) { if (fr.IsSpare()) { Console.Write("({0})|/|", fr.GetScoreFirst()); total += fr.GetScore(); } else { if (fr.GetScoreSecond() == 0) { Console.Write("({0})| -|", fr.GetScoreFirst()); } else { Console.Write("({0})| {1}|", fr.GetScoreFirst(), fr.GetScoreSecond()); } total += fr.GetScore(); } } else if (fr.IsStrike()) { Console.Write(" X| |"); total += fr.GetScore(); } else if (fr.IsSpare()) { if (fr.GetScoreFirst() == 0) { Console.Write(" -| /|", fr.GetScoreFirst()); } else { Console.Write(" {0}| /|", fr.GetScoreFirst()); } total += fr.GetScore(); } else { if (fr.GetScoreFirst() == 0) { if (fr.GetScoreSecond() == 0) { Console.Write(" -| -|"); } else { Console.Write(" -| {0}|", fr.GetScoreSecond()); } } else { if (fr.GetScoreSecond() == 0) { Console.Write(" {0}| -|", fr.GetScoreFirst()); } else { Console.Write(" {0}| {1}|", fr.GetScoreFirst(), fr.GetScoreSecond()); } } total += fr.GetScore(); } } for (int i = 0; i < 9 - frames.Count; i++) { Console.Write(" | |"); } if (frames.Count < 10 && !isLast) { Console.Write(" | | |"); } else { if (lastFrame.IsSplit()) { if (lastFrame.IsSpare()) { if (lastFrame.IsSplitThird()) { Console.Write("({0})| /|({1})|", lastFrame.GetScoreFirst(), lastFrame.GetScoreThird()); } else if (lastFrame.IsStrikeThird()) { Console.Write("({0})| /| X |", lastFrame.GetScoreFirst()); } else { if (lastFrame.GetScoreThird() == 0) { Console.Write("({0})| /| - |", lastFrame.GetScoreFirst()); } else { Console.Write("({0})| /| {1} |", lastFrame.GetScoreFirst(), lastFrame.GetScoreThird()); } } total += lastFrame.GetScore(); } else { if (lastFrame.GetScoreSecond() == 0) { Console.Write("({0})| -| |", lastFrame.GetScoreFirst()); } else { Console.Write("({0})| {1}| |", lastFrame.GetScoreFirst(), lastFrame.GetScoreSecond()); } total += lastFrame.GetScore(); } } else if (lastFrame.IsStrike()) { if (lastFrame.IsStrikeSecond()) { if (lastFrame.IsSplitThird()) { Console.Write(" X | X|({0})|", lastFrame.GetScoreThird()); } else if (lastFrame.IsStrikeThird()) { Console.Write(" X | X| X |"); } else { if (lastFrame.GetScoreThird() == 0) { Console.Write(" X | X| - |"); } else { Console.Write(" X | X| {0} |", lastFrame.GetScoreThird()); } } } else { if (lastFrame.IsSplitSecond()) { if (lastFrame.IsSpareThird()) { Console.Write(" X |({0})| /|", lastFrame.GetScoreSecond()); } else { if (lastFrame.GetScoreThird() == 0) { Console.Write(" X |({0})| -|", lastFrame.GetScoreSecond()); } else { Console.Write(" X |({0})| {1}|", lastFrame.GetScoreSecond(), lastFrame.GetScoreThird()); } } Console.Write(" X | |({0})|", lastFrame.GetScoreThird()); } else { if (lastFrame.GetScoreSecond() == 0) { if (lastFrame.IsSpareThird()) { Console.Write(" X | -| / |"); } else { if (lastFrame.GetScoreThird() == 0) { Console.Write(" X | -| - |"); } else { Console.Write(" X | -| {0} |", lastFrame.GetScoreThird()); } } } else { if (lastFrame.IsSpareThird()) { Console.Write(" X | {0}| / |", lastFrame.GetScoreSecond()); } else { if (lastFrame.GetScoreThird() == 0) { Console.Write(" X | {0}| - |", lastFrame.GetScoreSecond()); } else { Console.Write(" X | {0}| {1} |", lastFrame.GetScoreSecond(), lastFrame.GetScoreThird()); } } } } } total += lastFrame.GetScore(); } else if (lastFrame.IsSpare()) { if (lastFrame.IsSplitThird()) { if (lastFrame.GetScoreFirst() == 0) { Console.Write(" - | /|({0})|", lastFrame.GetScoreThird()); } else { Console.Write(" {0} | /|({1})|", lastFrame.GetScoreFirst(), lastFrame.GetScoreThird()); } } else if (lastFrame.IsStrikeThird()) { if (lastFrame.GetScoreFirst() == 0) { Console.Write(" - | /| X |"); } else { Console.Write(" {0} | /| X |", lastFrame.GetScoreFirst()); } } else { if (lastFrame.GetScoreFirst() == 0) { if (lastFrame.GetScoreThird() == 0) { Console.Write(" - | /| - |"); } else { Console.Write(" - | /| {0} |", lastFrame.GetScoreThird()); } } else { if (lastFrame.GetScoreThird() == 0) { Console.Write(" {0} | /| - |", lastFrame.GetScoreFirst()); } else { Console.Write(" {0} | /| {1} |", lastFrame.GetScoreFirst(), lastFrame.GetScoreThird()); } } } total += lastFrame.GetScore(); } else { if (lastFrame.GetScoreFirst() == 0) { if (lastFrame.GetScoreSecond() == 0) { Console.Write(" - | -| |"); } else { Console.Write(" - | {0}| |", lastFrame.GetScoreSecond()); } } else { if (lastFrame.GetScoreSecond() == 0) { Console.Write(" {0} | -| |", lastFrame.GetScoreFirst()); } else { Console.Write(" {0} | {1}| |", lastFrame.GetScoreFirst(), lastFrame.GetScoreSecond()); } } total += lastFrame.GetScore(); } } currentScore = total; Console.WriteLine(" {0, -10}| {1, -14}| {2, -11}", total, previousScore, total + previousScore); }
public void should_consider_bonus_frame_when_scoring_last_frame() { var lastFrame = new LastFrame("X", "XX"); Assert.That(lastFrame.GetScore(), Is.EqualTo(30)); }