예제 #1
0
        TurnResult IGame.MakeTurn(Sign sign, Field field)
        {
            if (!sign.Equals(this._currentPlayer.PlayerSign))
                throw new ItIsNotYourTurnException();

            var result = this._boardManager.MakeTurn(sign, field);

            if (result == TurnResult.Wrong || result == TurnResult.Win)
                return result;

            this._currentPlayer = this.GetCurrentPlayerOpponent();

            return result;
        }
예제 #2
0
        Player IGame.CreatePlayer()
        {
            lock (this._players)
            {
                if (this._players.Count == MaximumNumberOfPlayers)
                    throw new CannotJoinToGameException("Game has maximum number of players.");

                var playerContext = Guid.NewGuid().ToString();

                var player = new Player(playerContext, this._players.Count == 0 ? Sign.O : Sign.X);

                this.SetCurrentPlayerOnStart(player);

                this._players.Add(player);

                return player;
            }
        }
예제 #3
0
 public void SetUp()
 {
     this._game = GameFactory.Get();
     this._playerOne = this._game.CreatePlayer();
     this._playerTwo = this._game.CreatePlayer();
 }
예제 #4
0
 private void SetCurrentPlayerOnStart(Player player)
 {
     if (this._players.Count == 0)
         this._currentPlayer = player;
 }