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); }