add position blockers

This commit is contained in:
2024-03-12 10:44:25 +01:00
parent 08082faed3
commit cc3754ae00
4 changed files with 57 additions and 21 deletions

View File

@@ -39,10 +39,13 @@ typedef struct __pos_s {
bitboard_t controlled[2]; /* unsure */
bitboard_t checkers; /* opponent checkers */
bitboard_t pinners; /* opponent pinners */
bitboard_t blockers; /* pieces blocking pin */
piece_t board[BOARDSIZE];
movelist_t moves;
} pos_t;
#define pos_pinned(p) (p->blockers & p->bb[p->turn][ALL_PIECES])
/**
* pos_set_sq - unconditionally set a piece on a square
* @pos: position
@@ -120,7 +123,7 @@ static __always_inline int pos_between_count(const pos_t *pos,
/**
* pos_checkers2str() - get of string of checkers.
* @pos: position
* @p: position
* @str: destination string
* @len: max @str len.
*
@@ -128,8 +131,9 @@ static __always_inline int pos_between_count(const pos_t *pos,
*
* @return: @str.
*/
#define pos_checkers2str(pos, str, len) bb_sq2str((pos)->checkers, (str), (len))
#define pos_pinners2str(pos, str, len) bb_sq2str((pos)->pinners, (str), (len))
#define pos_checkers2str(p, str, len) bb_sq2str(p->checkers, str, len)
#define pos_pinners2str(p, str, len) bb_sq2str(p->pinners, str, len)
#define pos_blockers2str(p, str, len) bb_sq2str(p->blockers, str, len)
//void bitboard_print(bitboard_t bb, char *title);
//void bitboard_print2(bitboard_t bb1, bitboard_t bb2, char *title);
@@ -140,7 +144,9 @@ extern void pos_del(pos_t *pos);
extern pos_t *pos_clear(pos_t *pos);
extern bitboard_t pos_checkers(const pos_t *pos, const color_t color);
extern bitboard_t pos_pinners(const pos_t *pos, const color_t color);
extern bitboard_t pos_king_pinners(const pos_t *pos, const color_t color);
extern bitboard_t pos_king_blockers(const pos_t *pos, const color_t color, const bitboard_t );
//extern bitboard_t set_king_pinners_blockers(pos_t *pos);
//extern char *pos_checkers2str(const pos_t *pos, char *str);
//extern char *pos_pinners2str(const pos_t *pos, char *str);