1 2 // piece.h 3 4 #ifndef PIECE_H 5 #define PIECE_H 6 7 // includes 8 9 #include "colour.h" 10 #include "util.h" 11 12 // defines 13 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) 20 21 #define PawnFlags (BlackPawnFlag | WhitePawnFlag) 22 #define QueenFlags (BishopFlag | RookFlag) 23 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) 32 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) 46 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) 59 60 // functions 61 62 extern void piece_init (); 63 64 extern bool piece_is_ok (int piece); 65 66 extern int piece_make_pawn (int colour); 67 extern int piece_pawn_opp (int piece); 68 69 extern int piece_colour (int piece); 70 extern int piece_type (int piece); 71 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); 78 79 extern bool piece_is_slider (int piece); 80 81 extern int piece_to_12 (int piece); 82 extern int piece_from_12 (int piece); 83 84 extern int piece_to_char (int piece); 85 extern int piece_from_char (int c); 86 87 extern bool char_is_piece (int c); 88 89 #endif // !defined PIECE_H 90 91 // end of piece.h 92 93