@ -1,29 +1,38 @@
# include <unordered_set>
# include <constants.h>
const Position W_QUEEN_POS = E4 ;
const std : : array < PieceType , 64 > W_QUEEN_BOARD = {
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 , W_QUEEN , 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
} ;
const std : : array < PieceType , 64 > W_QUEEN_BOARD_BLOCKED = {
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 , B_PAWN , W_PAWN , B_PAWN , NONE , NONE ,
NONE , NONE , NONE , W_KNIGHT , W_QUEEN , B_PAWN , NONE , NONE ,
NONE , NONE , NONE , B_QUEEN , B_KNIGHT , W_PAWN , NONE , NONE ,
NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE ,
NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE
} ;
const std : : unordered_set < Position > W_QUEEN_ALL_MOVES = {
# include <bitwise_constants.h>
const int W_QUEEN_POS = E4 ;
const std : : array < PieceType , 120 > W_QUEEN_BOARD = {
INV , INV , INV , INV , INV , INV , INV , INV , INV , INV ,
INV , INV , INV , INV , INV , INV , INV , INV , INV , INV ,
INV , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , INV ,
INV , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , INV ,
INV , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , INV ,
INV , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , INV ,
INV , NONE , NONE , NONE , NONE , W_QUEEN , NONE , NONE , NONE , INV ,
INV , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , INV ,
INV , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , INV ,
INV , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , INV ,
INV , INV , INV , INV , INV , INV , INV , INV , INV , INV ,
INV , INV , INV , INV , INV , INV , INV , INV , INV , INV
} ;
const std : : array < PieceType , 120 > W_QUEEN_BOARD_BLOCKED = {
INV , INV , INV , INV , INV , INV , INV , INV , INV , INV ,
INV , INV , INV , INV , INV , INV , INV , INV , INV , INV ,
INV , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , INV ,
INV , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , INV ,
INV , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , INV ,
INV , NONE , NONE , NONE , B_PAWN , W_PAWN , B_PAWN , NONE , NONE , INV ,
INV , NONE , NONE , NONE , W_KNIGHT , W_QUEEN , B_PAWN , NONE , NONE , INV ,
INV , NONE , NONE , NONE , B_QUEEN , B_KNIGHT , W_PAWN , NONE , NONE , INV ,
INV , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , INV ,
INV , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , INV ,
INV , INV , INV , INV , INV , INV , INV , INV , INV , INV ,
INV , INV , INV , INV , INV , INV , INV , INV , INV , INV
} ;
const std : : unordered_set < int > W_QUEEN_ALL_MOVES = {
A8 , E8 ,
B7 , E7 , H7 ,
C6 , E6 , G6 ,
@ -34,19 +43,23 @@ const std::unordered_set<Position> W_QUEEN_ALL_MOVES = {
B1 , E1 , H1
} ;
const Position W_BISHOP_POS = D4 ;
const std : : array < PieceType , 64 > W_BISHOP_BOARD = {
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 , W_BISHOP , 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
const int W_BISHOP_POS = D4 ;
const std : : array < PieceType , 120 > W_BISHOP_BOARD = {
INV , INV , INV , INV , INV , INV , INV , INV , INV , INV ,
INV , INV , INV , INV , INV , INV , INV , INV , INV , INV ,
INV , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , INV ,
INV , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , INV ,
INV , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , INV ,
INV , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , INV ,
INV , NONE , NONE , NONE , W_BISHOP , NONE , NONE , NONE , NONE , INV ,
INV , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , INV ,
INV , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , INV ,
INV , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , INV ,
INV , INV , INV , INV , INV , INV , INV , INV , INV , INV ,
INV , INV , INV , INV , INV , INV , INV , INV , INV , INV
} ;
const std : : unordered_set < Position > W_BISHOP_ALL_MOVES = {
const std : : unordered_set < int > W_BISHOP_ALL_MOVES = {
H8 ,
A7 , G7 ,
B6 , F6 ,
@ -56,122 +69,150 @@ const std::unordered_set<Position> W_BISHOP_ALL_MOVES = {
A1 , G1
} ;
const Position W_KNIGHT_POS = D5 ;
const std : : array < PieceType , 64 > W_KNIGHT_BOARD = {
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 , W_KNIGHT , 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
} ;
const Position W_KNIGHT_SIDE1_POS = B7 ;
const std : : array < PieceType , 64 > W_KNIGHT_SIDE1_BOARD = {
NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE ,
NONE , W_KNIGHT , 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 , NONE ,
NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE
} ;
const std : : unordered_set < Position > W_KNIGHT_SIDE1_ALL_MOVES = {
const int W_KNIGHT_POS = D5 ;
const std : : array < PieceType , 120 > W_KNIGHT_BOARD = {
INV , INV , INV , INV , INV , INV , INV , INV , INV , INV ,
INV , INV , INV , INV , INV , INV , INV , INV , INV , INV ,
INV , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , INV ,
INV , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , INV ,
INV , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , INV ,
INV , NONE , NONE , NONE , W_KNIGHT , NONE , NONE , NONE , NONE , INV ,
INV , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , INV ,
INV , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , INV ,
INV , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , INV ,
INV , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , INV ,
INV , INV , INV , INV , INV , INV , INV , INV , INV , INV ,
INV , INV , INV , INV , INV , INV , INV , INV , INV , INV
} ;
const int W_KNIGHT_SIDE1_POS = B7 ;
const std : : array < PieceType , 120 > W_KNIGHT_SIDE1_BOARD = {
INV , INV , INV , INV , INV , INV , INV , INV , INV , INV ,
INV , INV , INV , INV , INV , INV , INV , INV , INV , INV ,
INV , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , INV ,
INV , NONE , W_KNIGHT , NONE , NONE , NONE , NONE , NONE , NONE , INV ,
INV , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , INV ,
INV , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , INV ,
INV , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , INV ,
INV , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , INV ,
INV , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , INV ,
INV , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , INV ,
INV , INV , INV , INV , INV , INV , INV , INV , INV , INV ,
INV , INV , INV , INV , INV , INV , INV , INV , INV , INV
} ;
const std : : unordered_set < int > W_KNIGHT_SIDE1_ALL_MOVES = {
D8 ,
D6 ,
A5 , C5
} ;
const std : : unordered_set < Position > W_KNIGHT_ALL_MOVES = {
const std : : unordered_set < int > W_KNIGHT_ALL_MOVES = {
C7 , E7 ,
B6 , F6 ,
B4 , F4 ,
C3 , E3
} ;
const Position W_ROOK_POS = E5 ;
const std : : array < PieceType , 64 > W_ROOK_BOARD = {
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 , W_ROOK , 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
const int W_ROOK_POS = E5 ;
const std : : array < PieceType , 120 > W_ROOK_BOARD = {
INV , INV , INV , INV , INV , INV , INV , INV , INV , INV ,
INV , INV , INV , INV , INV , INV , INV , INV , INV , INV ,
INV , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , INV ,
INV , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , INV ,
INV , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , INV ,
INV , NONE , NONE , NONE , NONE , W_ROOK , NONE , NONE , NONE , INV ,
INV , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , INV ,
INV , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , INV ,
INV , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , INV ,
INV , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , INV ,
INV , INV , INV , INV , INV , INV , INV , INV , INV , INV ,
INV , INV , INV , INV , INV , INV , INV , INV , INV , INV
} ;
const std : : unordered_set < Position > W_ROOK_ALL_MOVES = {
const std : : unordered_set < int > W_ROOK_ALL_MOVES = {
E8 , E7 , E6 ,
A5 , B5 , C5 , D5 , F5 , G5 , H5 ,
E4 , E3 , E2 , E1
} ;
const Position W_KING_POS = C4 ;
const std : : array < PieceType , 64 > W_KING_BOARD = {
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 , W_KING , 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
} ;
const Position W_KING_SIDE1_POS = A8 ;
const std : : array < PieceType , 64 > W_KING_SIDE1_BOARD = {
W_KING , 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 , NONE , NONE ,
NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE ,
NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE
} ;
const std : : unordered_set < Position > W_KING_SIDE1_ALL_MOVES = {
const int W_KING_POS = C4 ;
const std : : array < PieceType , 120 > W_KING_BOARD = {
INV , INV , INV , INV , INV , INV , INV , INV , INV , INV ,
INV , INV , INV , INV , INV , INV , INV , INV , INV , INV ,
INV , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , INV ,
INV , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , INV ,
INV , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , INV ,
INV , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , INV ,
INV , NONE , NONE , W_KING , NONE , NONE , NONE , NONE , NONE , INV ,
INV , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , INV ,
INV , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , INV ,
INV , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , INV ,
INV , INV , INV , INV , INV , INV , INV , INV , INV , INV ,
INV , INV , INV , INV , INV , INV , INV , INV , INV , INV
} ;
const int W_KING_SIDE1_POS = A8 ;
const std : : array < PieceType , 120 > W_KING_SIDE1_BOARD = {
INV , INV , INV , INV , INV , INV , INV , INV , INV , INV ,
INV , INV , INV , INV , INV , INV , INV , INV , INV , INV ,
INV , W_KING , NONE , NONE , NONE , NONE , NONE , NONE , NONE , INV ,
INV , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , INV ,
INV , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , INV ,
INV , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , INV ,
INV , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , INV ,
INV , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , INV ,
INV , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , INV ,
INV , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , INV ,
INV , INV , INV , INV , INV , INV , INV , INV , INV , INV ,
INV , INV , INV , INV , INV , INV , INV , INV , INV , INV
} ;
const std : : unordered_set < int > W_KING_SIDE1_ALL_MOVES = {
B8 ,
A7 , B7
} ;
const std : : unordered_set < Position > W_KING_ALL_MOVES = {
const std : : unordered_set < int > W_KING_ALL_MOVES = {
B5 , C5 , D5 ,
B4 , D4 ,
B3 , C3 , D3
} ;
const Position W_PAWN_POS = F4 ;
const std : : array < PieceType , 64 > W_PAWN_BOARD = {
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 , 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
const int W_PAWN_POS = F4 ;
const std : : array < PieceType , 120 > W_PAWN_BOARD = {
INV , INV , INV , INV , INV , INV , INV , INV , INV , INV ,
INV , INV , INV , INV , INV , INV , INV , INV , INV , INV ,
INV , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , INV ,
INV , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , INV ,
INV , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , INV ,
INV , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , INV ,
INV , NONE , NONE , NONE , NONE , NONE , W_PAWN , NONE , NONE , INV ,
INV , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , INV ,
INV , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , INV ,
INV , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , INV ,
INV , INV , INV , INV , INV , INV , INV , INV , INV , INV ,
INV , INV , INV , INV , INV , INV , INV , INV , INV , INV
} ;
const std : : unordered_set < Position > W_PAWN_ALL_MOVES = {
const std : : unordered_set < int > W_PAWN_ALL_MOVES = {
F5
} ;
const Position W_PAWN_SIDE1_POS = A8 ;
const std : : array < PieceType , 64 > W_PAWN_SIDE1_BOARD = {
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 , NONE , NONE ,
NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE ,
NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE
} ;
const std : : unordered_set < Position > W_PAWN_SIDE1_ALL_MOVES ;
const int W_PAWN_SIDE1_POS = A8 ;
const std : : array < PieceType , 120 > W_PAWN_SIDE1_BOARD = {
INV , INV , INV , INV , INV , INV , INV , INV , INV , INV ,
INV , INV , INV , INV , INV , INV , INV , INV , INV , INV ,
INV , W_PAWN , NONE , NONE , NONE , NONE , NONE , NONE , NONE , INV ,
INV , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , INV ,
INV , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , INV ,
INV , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , INV ,
INV , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , INV ,
INV , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , INV ,
INV , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , INV ,
INV , NONE , NONE , NONE , NONE , NONE , NONE , NONE , NONE , INV ,
INV , INV , INV , INV , INV , INV , INV , INV , INV , INV ,
INV , INV , INV , INV , INV , INV , INV , INV , INV , INV
} ;
const std : : unordered_set < int > W_PAWN_SIDE1_ALL_MOVES ;