private void OutputGameState(Game game) { Csl.Header(string.Format("Game state {0}, next to move is {1}", game.States.Count, game.GetActivePlayer().Name)); Csl.StartTable(18, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 10); var headers = new[] {"Player"}.Concat(Enumerable.Range(1, 8).Select(x => x.ToString())).Concat(new [] { "Sum" }); Csl.TableHead(headers.ToArray()); var white = new[] {game.White.Name}.Concat(game.GetCurrentState().WhiteCells.Select(x => (x is Die) ? ((Die) x).Value.ToString() : "." )).ToList(); white.Add(game.GetCurrentState().WhiteCells.OfType<Die>().Sum(x => x.Value).ToString()); Csl.TableRow(white.ToArray()); var black = new[] { game.Black.Name }.Concat(game.GetCurrentState().BlackCells.Select(x => (x is Die) ? ((Die) x).Value.ToString() : "." )).ToList(); black.Add(game.GetCurrentState().BlackCells.OfType<Die>().Sum(x => x.Value).ToString()); Csl.TableRow(black.ToArray()); Csl.Break(2); }
public Game StartNewGame(string whitePlayerName, string blackPlayerName) { var white = GameMechanics.Persistence.CreateOrGetPlayer(whitePlayerName); var black = GameMechanics.Persistence.CreateOrGetPlayer(blackPlayerName); var game = new Game { White = white, Black = black }; var initialState = GameMechanics.GameBoardFactory.NewBoard(); game.States.Add(initialState); if (!GameMechanics.Rules.IsGameValidAndPlayable(game)) { throw new GameRulesBrokenException("The game is in an invalid state!"); } GameMechanics.Persistence.SaveGame(game); return game; }
// This is wrong! Any game configuration is considered valid and playable! public bool IsGameValidAndPlayable(Game game) { return true; }
public void SaveGame(Game game) { MarkToBottom(game); Save(); }