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); }
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); }
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 }; }
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); }
public Game(BlackPlayer player) : this(player, new Board()) { }