Add fen parser and board loading
All checks were successful
Python tests (make) / test (push) Successful in 10s
All checks were successful
Python tests (make) / test (push) Successful in 10s
This commit is contained in:
@@ -20,8 +20,16 @@
|
||||
#define RANK_7 0x00FF000000000000ULL
|
||||
#define RANK_8 0xFF00000000000000ULL
|
||||
|
||||
enum Color { WHITE = 0, BLACK = 1 };
|
||||
enum Piece { PAWN, KNIGHT, BISHOP, ROOK, QUEEN, KING, PIECE_N = 6 };
|
||||
#define SET_BIT(bb, sq) ((bb) |= (1ULL << (sq)))
|
||||
#define CLEAR_BIT(bb, sq) ((bb) &= ~(1ULL << (sq)))
|
||||
#define GET_BIT(bb, sq) ((bb) & (1ULL << (sq)))
|
||||
#define TOGGLE_BIT(bb, sq) ((bb) ^= (1ULL << (sq)))
|
||||
|
||||
enum Color { WHITE = 0, BLACK = 1, BOTH = 2 };
|
||||
enum Piece {
|
||||
P, N, B, R, Q, K, // 0..5 white
|
||||
p, n, b, r, q, k // 6..11 black
|
||||
};
|
||||
|
||||
enum Castling {
|
||||
CASTLE_WK = 1 << 0,
|
||||
@@ -31,18 +39,17 @@ enum Castling {
|
||||
};
|
||||
|
||||
struct Board {
|
||||
uint64_t bb[2][PIECE_N]; // Each set of pieces get a bitboard for each player.
|
||||
uint64_t occ[2]; // Color occupancy bitboards.
|
||||
uint64_t occ_both; // occ[WHITE] | occ[BLACK]
|
||||
uint64_t pieces[12]; // Each set of pieces get a bitboard for each player.
|
||||
uint64_t occ[3]; // Color occupancy bitboards.
|
||||
|
||||
uint64_t king_square[2];
|
||||
|
||||
uint8_t castling;
|
||||
uint64_t ep_square;
|
||||
uint8_t castling_rights;
|
||||
int ep_square;
|
||||
enum Color side_to_move;
|
||||
|
||||
uint16_t halfmove_clock;
|
||||
uint16_t fullmove_number;
|
||||
int halfmove_clock;
|
||||
int fullmove_number;
|
||||
};
|
||||
|
||||
void create_knight_attack_cache(void);
|
||||
|
||||
Reference in New Issue
Block a user