add M_PR_NL option in move_print()
This commit is contained in:
@@ -98,7 +98,7 @@ int main(int ac, char**av)
|
||||
pos_t *pos;
|
||||
eval_t res;
|
||||
|
||||
debug_init(5, stderr);
|
||||
debug_init(5, stderr, true);
|
||||
|
||||
piece_pool_init();
|
||||
moves_pool_init();
|
||||
|
@@ -179,7 +179,7 @@ int main(int ac, char**av)
|
||||
{
|
||||
pos_t *pos;
|
||||
|
||||
debug_init(5, stderr);
|
||||
debug_init(5, stderr, true);
|
||||
piece_pool_init();
|
||||
pos_pool_init();
|
||||
pos = pos_get();
|
||||
|
41
src/move.c
41
src/move.c
@@ -73,18 +73,19 @@ void moves_pool_stats()
|
||||
* M_PR_NCAPT: print move if non capture
|
||||
* M_PR_NUM: print also move number
|
||||
* M_PR_LONG: print long notation
|
||||
* M_PR_NL: print a newline after move
|
||||
*
|
||||
* @return: 0 if nothing printed, 1 otherwise
|
||||
*/
|
||||
int move_print(int movenum, move_t *move, move_flags_t flags)
|
||||
{
|
||||
if (flags & M_PR_CAPT && !(move->flags & M_CAPTURE)) {
|
||||
if ((flags & M_PR_CAPT) && !(move->flags & M_CAPTURE)) {
|
||||
# ifdef DEBUG_MOVE
|
||||
log_i(9, "skipping capture & %#04x\n", move->flags);
|
||||
# endif
|
||||
return 0;
|
||||
}
|
||||
if (flags & M_PR_NCAPT && move->flags & M_CAPTURE) {
|
||||
if ((flags & M_PR_NCAPT) && (move->flags & M_CAPTURE)) {
|
||||
# ifdef DEBUG_MOVE
|
||||
log_i(9, "skipping !capture & %#04x\n", move->flags);
|
||||
# endif
|
||||
@@ -119,6 +120,8 @@ int move_print(int movenum, move_t *move, move_flags_t flags)
|
||||
end:
|
||||
printf(" ");
|
||||
}
|
||||
if (flags & M_PR_NL)
|
||||
printf("\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -660,9 +663,10 @@ void moves_gen_all(pos_t *pos)
|
||||
{
|
||||
moves_gen(pos, OPPONENT(pos->turn), false, false);
|
||||
moves_gen(pos, pos->turn, true, true);
|
||||
moves_gen_king_moves(pos, OPPONENT(pos->turn), true);
|
||||
moves_gen_king_moves(pos, OPPONENT(pos->turn), false);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* move_do() - execute move in a duplicated position.
|
||||
* @pos: &pos_t struct on which move will be applied
|
||||
@@ -672,13 +676,12 @@ void moves_gen_all(pos_t *pos)
|
||||
pos_t *move_do(pos_t *pos, move_t *move)
|
||||
{
|
||||
# ifdef DEBUG_MOVE
|
||||
log_f(3, "++++++++++");
|
||||
move_print(0, move, 0);
|
||||
log(3, "\n");
|
||||
printf("++++++++++ ");
|
||||
move_print(0, move, M_PR_NL | M_PR_LONG | M_PR_NUM);
|
||||
# endif
|
||||
|
||||
pos_t *new = pos_dup(pos);
|
||||
piece_t piece = move->piece;
|
||||
piece_t piece = PIECE(move->piece), newpiece = piece, captured = move->capture;
|
||||
int color = COLOR(piece);
|
||||
square_t from = move->from, to = move->to;
|
||||
|
||||
@@ -692,7 +695,7 @@ pos_t *move_do(pos_t *pos, move_t *move)
|
||||
piece_del(&new->board[to].s_piece->list);
|
||||
new->board[to].piece = 0;
|
||||
new->occupied[OPPONENT(color)] ^= SQ88_2_BB(to);
|
||||
new->bb[OPPONENT(color)][PIECETOBB(piece)] ^= SQ88_2_BB(to);
|
||||
new->bb[OPPONENT(color)][PIECETOBB(captured)] ^= SQ88_2_BB(to);
|
||||
} else {
|
||||
uchar ep_file = F88(pos->en_passant);
|
||||
square_t ep_grab = color == WHITE ? SQ88(ep_file, 4): SQ88(ep_file, 3);
|
||||
@@ -700,7 +703,7 @@ pos_t *move_do(pos_t *pos, move_t *move)
|
||||
piece_del(&new->board[ep_grab].s_piece->list);
|
||||
new->board[ep_grab].piece = 0;
|
||||
new->occupied[OPPONENT(color)] ^= SQ88_2_BB(ep_grab);
|
||||
new->bb[OPPONENT(color)][PIECETOBB(piece)] ^= SQ88_2_BB(ep_grab);
|
||||
new->bb[OPPONENT(color)][BB_PAWN] ^= SQ88_2_BB(ep_grab);
|
||||
}
|
||||
|
||||
} else if (move->flags & M_CASTLE_Q) {
|
||||
@@ -729,21 +732,25 @@ pos_t *move_do(pos_t *pos, move_t *move)
|
||||
new->board[rook_from].s_piece = NULL;
|
||||
}
|
||||
|
||||
if (move->flags & M_PROMOTION) {
|
||||
log(2, "promotion to %s\n", P_SYM(move->piece));
|
||||
new->board[to].piece = move->promotion;
|
||||
new->board[to].s_piece->square = to;
|
||||
new->board[to].s_piece->piece = move->promotion;
|
||||
} else {
|
||||
new->board[to] = new->board[from];
|
||||
/* fix dest square */
|
||||
new->board[to].s_piece->square = to;
|
||||
if (move->flags & M_PROMOTION) {
|
||||
log(2, "promotion to %s\n", P_SYM(move->promotion));
|
||||
printf("newpiece=%#x p=%#x\n", move->promotion, PIECE(move->promotion));
|
||||
newpiece = PIECE(move->promotion);
|
||||
new->board[to].piece = move->promotion;
|
||||
new->board[to].s_piece->piece = move->promotion;
|
||||
}
|
||||
/* replace old occupied bitboard by new one */
|
||||
new->occupied[color] ^= SQ88_2_BB(from);
|
||||
new->occupied[color] |= SQ88_2_BB(to);
|
||||
new->bb[color][PIECETOBB(piece)] ^= SQ88_2_BB(from);
|
||||
new->bb[color][PIECETOBB(piece)] |= SQ88_2_BB(to);
|
||||
new->bb[color][PIECETOBB(newpiece)] |= SQ88_2_BB(to);
|
||||
if (move->flags & M_PROMOTION) {
|
||||
printf("color=%d bbpiece=%d\n", color, PIECETOBB(newpiece));
|
||||
bitboard_print(new->bb[color][PIECETOBB(newpiece)]);
|
||||
}
|
||||
|
||||
/* always make "from" square empty */
|
||||
new->board[from].piece = 0;
|
||||
@@ -765,7 +772,7 @@ int main(int ac, char**av)
|
||||
{
|
||||
pos_t *pos;
|
||||
|
||||
debug_init(5, stderr);
|
||||
debug_init(5, stderr, true);
|
||||
piece_pool_init();
|
||||
moves_pool_init();
|
||||
pos_pool_init();
|
||||
|
@@ -35,6 +35,7 @@ typedef unsigned char move_flags_t;
|
||||
#define M_PR_CAPT 0x01
|
||||
#define M_PR_NCAPT 0x02
|
||||
#define M_PR_NUM 0x04
|
||||
#define M_PR_NL 0x08
|
||||
#define M_PR_SEPARATE 0x40 /* separate captures */
|
||||
#define M_PR_LONG 0x80
|
||||
|
||||
@@ -44,6 +45,7 @@ typedef struct move_s {
|
||||
piece_t capture; /* captured piece */
|
||||
piece_t promotion; /* promoted piece */
|
||||
move_flags_t flags;
|
||||
eval_t negamax;
|
||||
struct list_head list; /* next move */
|
||||
} move_t;
|
||||
|
||||
@@ -65,4 +67,4 @@ void moves_gen_all(pos_t *pos);
|
||||
pos_t *move_do(pos_t *pos, move_t *move);
|
||||
void move_undo(pos_t *pos, move_t *move);
|
||||
|
||||
#endif /* MODE_H */
|
||||
#endif /* MOVE_H */
|
||||
|
@@ -122,7 +122,7 @@ int main(int ac, char**av)
|
||||
{
|
||||
pos_t *pos;
|
||||
printf("zobi\n");fflush(stdout);
|
||||
debug_init(6, stderr);
|
||||
debug_init(6, stderr, true);
|
||||
log_f(5, "kfsjdhg\n");
|
||||
pos_pool_init();
|
||||
pos = pos_get();
|
||||
|
Reference in New Issue
Block a user