コード例 #1
0
ファイル: GameTable.cs プロジェクト: uaandrei/diss
        public void ChangePlayers(bool isBlackAI, bool isWhiteAI)
        {
            var currentPlayerColor = CurrentPlayer.Color;
            var blackPlayer        = _players.First(p => p.Color == PieceColor.Black);
            var whitePlayer        = _players.First(p => p.Color == PieceColor.White);

            if (isBlackAI && !blackPlayer.IsAutomatic)
            {
                blackPlayer = new SmartComputerPlayer(_pieces.Where(p => p.Color == PieceColor.Black), blackPlayer.MoveOrder);
            }
            if (!isBlackAI && blackPlayer.IsAutomatic)
            {
                blackPlayer = new HumanPlayer(_pieces.Where(p => p.Color == PieceColor.Black), blackPlayer.MoveOrder);
            }

            if (isWhiteAI && !whitePlayer.IsAutomatic)
            {
                whitePlayer = new SmartComputerPlayer(_pieces.Where(p => p.Color == PieceColor.White), whitePlayer.MoveOrder);
            }
            if (!isWhiteAI && whitePlayer.IsAutomatic)
            {
                whitePlayer = new HumanPlayer(_pieces.Where(p => p.Color == PieceColor.White), whitePlayer.MoveOrder);
            }

            _players            = new IPlayer[] { whitePlayer, blackPlayer };
            _playerSwitchSystem = new PlayerSwitchSystem(_players.GetEnumerator());
            _playerSwitchSystem.SwitchToPlayer(currentPlayerColor);
            _eventAggregator.GetEvent <Chess.Infrastructure.Events.RefreshTableEvent>().Publish(this);
        }
コード例 #2
0
ファイル: GameTable.cs プロジェクト: uaandrei/diss
        private void ResetBoardState(bool clearStack = true)
        {
            ClearAllMoves();
            _selectedPiece = null;
            _playerSwitchSystem.SwitchToPlayer(_gameInfo.ColorToMove);
            if (clearStack)
            {
                ClearFenStack();
            }

            _eventAggregator.GetEvent <RefreshTableEvent>().Publish(_gameInfo);
        }