Пример #1
0
        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
 public void StartNewGame()
 {
     _gameInfo = new GameInfo()
     {
         Bkca        = true,
         Wkca        = true,
         Bqca        = true,
         Wqca        = true,
         ColorToMove = PieceColor.White,
         EnPassant   = null,
         FullMoves   = 0,
         HalfMoves   = 0
     };
     Id = Guid.NewGuid().ToString();
     InitializePlayersAndPieces();
     _playerSwitchSystem = new PlayerSwitchSystem(_players.GetEnumerator());
     ResetBoardState(true);
 }