Exemple #1
0
        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);
        }
Exemple #2
0
        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;
        }
Exemple #3
0
 // This is wrong! Any game configuration is considered valid and playable!
 public bool IsGameValidAndPlayable(Game game)
 {
     return true;
 }
Exemple #4
0
        public void SaveGame(Game game)
        {
            MarkToBottom(game);

            Save();
        }