14 // HACK: a1a1 cannot be a legal move
17 #define MovePromoteKnight (1 << 12)
18 #define MovePromoteBishop (2 << 12)
19 #define MovePromoteRook (3 << 12)
20 #define MovePromoteQueen (4 << 12)
21 #define MoveFlags (7 << 12)
25 typedef uint16 move_t;
29 extern bool move_is_ok (int move);
31 extern int move_make (int from, int to);
32 extern int move_make_flags (int from, int to, int flags);
34 extern int move_from (int move);
35 extern int move_to (int move);
36 extern int move_promote_hack (int move);
38 extern bool move_is_capture (int move, const board_t * board);
39 extern bool move_is_promote (int move);
40 extern bool move_is_en_passant (int move, const board_t * board);
41 extern bool move_is_castle (int move, const board_t * board);
43 extern int move_piece (int move, const board_t * board);
44 extern int move_capture (int move, const board_t * board);
45 extern int move_promote (int move, const board_t * board);
47 extern bool move_is_check (int move, const board_t * board);
48 extern bool move_is_mate (int move, const board_t * board);
50 extern int move_order (int move);
52 extern bool move_to_can (int move, const board_t * board, char string[], int size);
53 extern int move_from_can (const char string[], const board_t * board);
55 extern void move_disp (int move, const board_t * board);
57 #endif // !defined MOVE_H