Пример #1
0
 // Ctor to bring together Team4.dll class AIPlayer and TicTacToe class Player
 public Player(Epam_Team4.AIPlayer AIPlayer, TimeSpan timeLimit)
 {
     Team4AI        = AIPlayer;
     MyPlayerType   = PlayerType.computer;
     MyFigure       = AIPlayer.MyFigure;
     this.timeLimit = timeLimit;
     name           = AIPlayer.Name;
     SetTimer();
 }
Пример #2
0
        /// <summary>
        /// Initialize players and Determine which figure for which player, who goes first and subscribe for PlayerMadeMove event
        /// </summary>
        private void InitializePlayers()
        {
            // Determine which figure for which player: "X" go first, "O" go second.
            rnd = new Random();
            if (rnd.Next(0, 2) == 0)
            {
                player1Figure = State.X;
                player2Figure = State.O;
            }
            else
            {
                player1Figure = State.O;
                player2Figure = State.X;
            }
            // Initialize 1st player.
            if (player1Type == PlayerType.human)// from game settings
            {
                player1 = new Player(new HumanPlayer(player1Figure), timeLimit);
            }
            else
            {
                Team4AI = new Epam_Team4.AIPlayer((byte)player1Figure, (byte)stripeLengthToWin, boardSize);
                player1 = new Player(Team4AI, timeLimit);
            }
            player1.MyNumber = PlayerNumber.player1;


            // Initialize 2nd player.
            if (player2Type == PlayerType.human)// from game settings
            {
                player2 = new Player(new HumanPlayer(player2Figure), timeLimit);
            }
            else
            {
                Team4AI = new Epam_Team4.AIPlayer((byte)player2Figure, (byte)stripeLengthToWin, boardSize);
                player2 = new Player(Team4AI, timeLimit);
            }
            player2.MyNumber = PlayerNumber.player2;

            // Subscribe to players time's up event.
            player1.updateBFLimits += OnPlayerUpdateBFLimits;
            player2.updateBFLimits += OnPlayerUpdateBFLimits;

            // Subscribe to players time's up event.
            player1.timesUpEvent += OnTimesUp;
            player2.timesUpEvent += OnTimesUp;

            // Subscribe to player update event
            player1.updateTimeLimitEvent += OnUpdateTimeLimit;
            player2.updateTimeLimitEvent += OnUpdateTimeLimit;

            // Update labels with time limit for each player.
            deUpdateTimeLimit(player1);
            deUpdateTimeLimit(player2);


            // Subscribe to players MadeMove events
            if (player1.MyPlayerType == PlayerType.computer)
            {
                player1.playerMadeMoveEvent += OnPlayerMadeMove;
            }
            if (player2.MyPlayerType == PlayerType.computer)
            {
                player2.playerMadeMoveEvent += OnPlayerMadeMove;
            }

            // Set activePlayer
            activePlayer = player1.MyFigure == State.X ? player1 : player2;

            // FIRST TURN
            // If first turn is up to computer, call his move.
            if (activePlayer.MyPlayerType == PlayerType.computer)
            {
                activePlayer.MakeMove((Board)board.Clone());// pass new board to the AIPlayer
            }
            else
            {
                activePlayer.timer.Start();// if human - start his timer
            }
        }