14 const int MoveNone = 0; // HACK: a1a1 cannot be a legal move
\r
16 const int MovePromoteKnight = 1 << 12;
\r
17 const int MovePromoteBishop = 2 << 12;
\r
18 const int MovePromoteRook = 3 << 12;
\r
19 const int MovePromoteQueen = 4 << 12;
\r
20 const int MoveFlags = 7 << 12;
\r
24 typedef uint16 move_t;
\r
28 extern bool move_is_ok (int move);
\r
30 extern int move_make (int from, int to);
\r
31 extern int move_make_flags (int from, int to, int flags);
\r
33 extern int move_from (int move);
\r
34 extern int move_to (int move);
\r
35 extern int move_promote_hack (int move);
\r
37 extern bool move_is_capture (int move, const board_t * board);
\r
38 extern bool move_is_promote (int move);
\r
39 extern bool move_is_en_passant (int move, const board_t * board);
\r
40 extern bool move_is_castle (int move, const board_t * board);
\r
42 extern int move_piece (int move, const board_t * board);
\r
43 extern int move_capture (int move, const board_t * board);
\r
44 extern int move_promote (int move, const board_t * board);
\r
46 extern bool move_is_check (int move, const board_t * board);
\r
47 extern bool move_is_mate (int move, const board_t * board);
\r
49 extern int move_order (int move);
\r
51 extern bool move_to_can (int move, const board_t * board, char string[], int size);
\r
52 extern int move_from_can (const char string[], const board_t * board);
\r
54 extern void move_disp (int move, const board_t * board);
\r
56 #endif // !defined MOVE_H
\r