14 #define BlackPawnFlag (1 << 2)
15 #define WhitePawnFlag (1 << 3)
16 #define KnightFlag (1 << 4)
17 #define BishopFlag (1 << 5)
18 #define RookFlag (1 << 6)
19 #define KingFlag (1 << 7)
21 #define PawnFlags (BlackPawnFlag | WhitePawnFlag)
22 #define QueenFlags (BishopFlag | RookFlag)
24 #define PieceNone64 (0)
25 #define BlackPawn64 (BlackPawnFlag)
26 #define WhitePawn64 (WhitePawnFlag)
27 #define Knight64 (KnightFlag)
28 #define Bishop64 (BishopFlag)
29 #define Rook64 (RookFlag)
30 #define Queen64 (QueenFlags)
31 #define King64 (KingFlag)
33 #define PieceNone256 (0)
34 #define BlackPawn256 (BlackPawn64 | Black)
35 #define WhitePawn256 (WhitePawn64 | White)
36 #define BlackKnight256 (Knight64 | Black)
37 #define WhiteKnight256 (Knight64 | White)
38 #define BlackBishop256 (Bishop64 | Black)
39 #define WhiteBishop256 (Bishop64 | White)
40 #define BlackRook256 (Rook64 | Black)
41 #define WhiteRook256 (Rook64 | White)
42 #define BlackQueen256 (Queen64 | Black)
43 #define WhiteQueen256 (Queen64 | White)
44 #define BlackKing256 (King64 | Black)
45 #define WhiteKing256 (King64 | White)
47 #define BlackPawn12 (0)
48 #define WhitePawn12 (1)
49 #define BlackKnight12 (2)
50 #define WhiteKnight12 (3)
51 #define BlackBishop12 (4)
52 #define WhiteBishop12 (5)
53 #define BlackRook12 (6)
54 #define WhiteRook12 (7)
55 #define BlackQueen12 (8)
56 #define WhiteQueen12 (9)
57 #define BlackKing12 (10)
58 #define WhiteKing12 (11)
62 extern void piece_init ();
64 extern bool piece_is_ok (int piece);
66 extern int piece_make_pawn (int colour);
67 extern int piece_pawn_opp (int piece);
69 extern int piece_colour (int piece);
70 extern int piece_type (int piece);
72 extern bool piece_is_pawn (int piece);
73 extern bool piece_is_knight (int piece);
74 extern bool piece_is_bishop (int piece);
75 extern bool piece_is_rook (int piece);
76 extern bool piece_is_queen (int piece);
77 extern bool piece_is_king (int piece);
79 extern bool piece_is_slider (int piece);
81 extern int piece_to_12 (int piece);
82 extern int piece_from_12 (int piece);
84 extern int piece_to_char (int piece);
85 extern int piece_from_char (int c);
87 extern bool char_is_piece (int c);
89 #endif // !defined PIECE_H