Ejemplo n.º 1
0
        private Tuple<bool, List<string>> IsInCheck(PlayerTypeEnum playerType, ChessBoard board, string lastMoveNotation)
        {
            PlayerTypeEnum opponentPlayerType = GetOppositePlayer(playerType);
            List<string> opponentSquares = board.GetPiecesForPlayer(opponentPlayerType);
            string kingNotation = board.GetKing(playerType);

            if (kingNotation == null)
                return new Tuple<bool, List<string>>(false, null);

            bool isInCheck = false;
            List<string> attackers = new List<string>();
            foreach (var square in opponentSquares)
            {
                var opponentMoveResult = CanMove(board, square, kingNotation, opponentPlayerType, lastMoveNotation, false);
                if (opponentMoveResult.Success)
                {
                    isInCheck = true;
                    attackers.Add(square);
                }
            }

            return new Tuple<bool, List<string>>(isInCheck, attackers);
        }