Exemple #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);
        }
Exemple #2
0
        private void InitializePlayersAndPieces()
        {
            _pieces = _pieceFactory.GetAllPieces();
            _pieces.ForEach(p => p.PieceMoving += OnPieceMoving);
            var whitePlayer = new HumanPlayer(_pieces.Where(p => p.Color == Infrastructure.Enums.PieceColor.White), 1);
            var blackPlayer = new SmartComputerPlayer(_pieces.Where(p => p.Color == Infrastructure.Enums.PieceColor.Black), 2);

            _players = new IPlayer[] { whitePlayer, blackPlayer };
        }