Exemple #1
0
        private void StartNewGame(Player invitee, Player inviter)
        {
            var blackPlayer = new BlackPlayer(inviter.Name);
            var whitePlayer = new WhitePlayer(invitee.Name);
            var game        = CreateNewGame(blackPlayer);
            var state       = JoinGame(game.GameId, whitePlayer);

            OnGameStarted(blackPlayer, state);
            OnGameStarted(whitePlayer, state);
        }
Exemple #2
0
        public GameStatus CreateNewGame(Player player)
        {
            AssertPlayerIsRegistered(player);

            var blackPlayer = new BlackPlayer(player.Name);

            var game = new Game(blackPlayer);

            game.GameStateChanged += (e, observerId, args) =>
            {
                OnGameChanged(observerId, args);
            };
            _activeGames.Add(game.GameId, game);
            return(game.CurrentStatus);
        }
Exemple #3
0
        internal Game(BlackPlayer player, Board board)
        {
            GameId    = Guid.NewGuid();
            Board     = board;
            GameState = GameState.WaitingForOpponent;

            _blackPlayer       = player;
            _discOfNextMove    = DiscColor.Black;
            _lastPiecesFlipped = null;
            _lastValidMove     = null;

            _observers = new List <Player> {
                player
            };
        }
Exemple #4
0
        public GameStatus(
            Guid gameId,
            GameState gameState,
            Board board,
            DiscColor discOfNextMove,
            IReadOnlyList <Position> discsFlipped,
            Move lastValidMove,
            BlackPlayer blackPlayer,
            WhitePlayer whitePlayer
            )
        {
            GameId       = gameId;
            CurrentState = board.CurrentState;
            GameState    = gameState;
            Debug.WriteLine(board);
            DiscOfNextMove = discOfNextMove;
            DiscsFlipped   = discsFlipped;
            LastValidMove  = lastValidMove;

            int blackPlayerScore = 0;
            int whitePlayerScore = 0;

            for (var i = 0; i < Board.EdgeSize; i++)
            {
                for (var j = 0; j < Board.EdgeSize; j++)
                {
                    if (CurrentState[i, j] == -1)
                    {
                        blackPlayerScore += 1;
                    }
                    else if (CurrentState[i, j] == 1)
                    {
                        whitePlayerScore += 1;
                    }
                }
            }

            BlackPlayerStatus = new PlayerStatus(blackPlayer.Name, blackPlayerScore);
            WhitePlayerStatus = new PlayerStatus(whitePlayer?.Name ?? "No player", whitePlayerScore);
        }
Exemple #5
0
 public Game(BlackPlayer player) : this(player, new Board())
 {
 }