protected virtual int EvaluateImpl(Game game, IList<GameFrame> frames) { var result = 0; for (var i = 0; i < frames.Count; ++i) { var frame = frames[i]; var next1 = Get(game, frames, i + 1); var next2 = Get(game, frames, i + 2); result += frames[i].Score; result += Bonus(frame, next1, next2); } return result; }
internal static void Main(string[] args) { var game = new Game(); var history = new[] { new[] {1, 4}, new[] {4, 5}, new[] {6, 4}, new[] {5, 5}, new[] {10}, new[] {0, 1}, new[] {7, 3}, new[] {6, 4}, new[] {10}, new[] {2, 8, 6} }; foreach (var frame in history) { foreach (var pins in frame) { game.Roll(pins); } } System.Console.WriteLine(game.Score()); System.Console.WriteLine("Presss any key to continue.."); System.Console.ReadKey(); }
public int Evaluate(Game game) { return EvaluateImpl(game, game.Frames); }
private static GameFrame Get(Game game, IList<GameFrame> frames, int i) { if (i < frames.Count) return frames[i]; return new GameFrame(game); }
internal GameFrame(Game game) { Game = game; }