#include #include /// This is for possible moves on a default board const std::unordered_set DEFAULT_B_A_PAWN_POSSIBLE_MOVES = { A6, A5 }; const std::unordered_set DEFAULT_W_A_PAWN_POSSIBLE_MOVES = { A3, A4 }; const std::unordered_set DEFAULT_W_R_KNIGHT_POSSIBLE_MOVES = { H3, F3 }; // EMPTY const std::unordered_set DEFAULT_W_R_ROOK_POSSIBLE_MOVES = {}; // END of default selections const Position KNIGHT_BLOCKED1_POS = B8; const std::array KNIGHT_BLOCKED1_BOARD = { NONE, B_KNIGHT, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, B_PAWN, NONE, NONE, NONE, NONE, NONE, NONE, W_PAWN, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE }; // Should NOT inclde D7 const std::unordered_set KNIGHT_BLOCKED1_MOVES = { A6, C6 }; const Position BISHOP_BLOCKED1_POS = D5; const std::array BISHOP_BLOCKED1_BOARD = { NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, B_QUEEN, NONE , B_PAWN , NONE, W_KING, NONE, NONE, NONE, NONE , NONE , NONE , NONE, NONE, NONE, NONE, NONE, NONE , W_ROOK, W_BISHOP, NONE, NONE, NONE, NONE, NONE, NONE , NONE , NONE , NONE, NONE, NONE, NONE, NONE, NONE , NONE , NONE , NONE, B_KING, NONE, NONE, NONE, NONE , NONE , NONE , NONE, NONE, NONE, NONE, NONE, NONE , NONE , NONE , NONE, NONE, NONE, NONE }; // Should NOT include A8, H8, G2, or H1 const std::unordered_set BISHOP_BLOCKED1_MOVES = { B7, C6,E6, C4,E4, B3,F3, A2 }; // Should NOT include B2 (black queen) as it is obstructed by the bishop on D5 const std::unordered_set BISHOP_BLOCKED1_CAN_MOVE_TO_B_KING = { D5 }; const Position BISHOP_BLOCKED1_KING_POS = F3; const Position ROOK_BLOCKED1_POS = B7; const std::array ROOK_BLOCKED1_BOARD = { NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, W_ROOK, NONE , B_PAWN , NONE, B_KING, NONE, NONE, NONE, NONE , NONE , NONE , NONE, NONE, NONE, NONE, NONE, NONE , B_BISHOP, NONE, NONE, NONE, NONE, NONE, NONE, NONE , NONE , NONE , NONE, NONE, NONE, NONE, NONE, W_KING , NONE , NONE , NONE, NONE, NONE, NONE, NONE, NONE , NONE , NONE , NONE, NONE, NONE, NONE, NONE, NONE , NONE , NONE , NONE, NONE, NONE, NONE }; // Should NOT include E-H2 or B3-1 const std::unordered_set ROOK_BLOCKED1_MOVES = { B8, A7, C7, D7, B6,B5,B4 };