version 1.4.36b
[polyglot.git] / piece.h
1 \r
2 // piece.h\r
3 \r
4 #ifndef PIECE_H\r
5 #define PIECE_H\r
6 \r
7 // includes\r
8 \r
9 #include "colour.h"\r
10 #include "util.h"\r
11 \r
12 // defines\r
13 \r
14 #define BlackPawnFlag     (1 << 2)\r
15 #define WhitePawnFlag     (1 << 3)\r
16 #define KnightFlag        (1 << 4)\r
17 #define BishopFlag        (1 << 5)\r
18 #define RookFlag          (1 << 6)\r
19 #define KingFlag          (1 << 7)\r
20 \r
21 #define PawnFlags   (BlackPawnFlag | WhitePawnFlag)\r
22 #define QueenFlags  (BishopFlag | RookFlag)\r
23 \r
24 #define PieceNone64     (0)\r
25 #define BlackPawn64     (BlackPawnFlag)\r
26 #define WhitePawn64     (WhitePawnFlag)\r
27 #define Knight64        (KnightFlag)\r
28 #define Bishop64        (BishopFlag)\r
29 #define Rook64          (RookFlag)\r
30 #define Queen64         (QueenFlags)\r
31 #define King64          (KingFlag)\r
32 \r
33 #define  PieceNone256      (0)\r
34 #define  BlackPawn256      (BlackPawn64 | Black)\r
35 #define  WhitePawn256      (WhitePawn64 | White)\r
36 #define  BlackKnight256    (Knight64    | Black)\r
37 #define  WhiteKnight256    (Knight64    | White)\r
38 #define  BlackBishop256    (Bishop64    | Black)\r
39 #define  WhiteBishop256    (Bishop64    | White)\r
40 #define  BlackRook256      (Rook64      | Black)\r
41 #define  WhiteRook256      (Rook64      | White)\r
42 #define  BlackQueen256     (Queen64     | Black)\r
43 #define  WhiteQueen256     (Queen64     | White)\r
44 #define  BlackKing256      (King64      | Black)\r
45 #define  WhiteKing256      (King64      | White)\r
46 \r
47 #define BlackPawn12        (0)\r
48 #define WhitePawn12        (1)\r
49 #define BlackKnight12      (2)\r
50 #define WhiteKnight12      (3)\r
51 #define BlackBishop12      (4)\r
52 #define WhiteBishop12      (5)\r
53 #define BlackRook12        (6)\r
54 #define WhiteRook12        (7)\r
55 #define BlackQueen12       (8)\r
56 #define WhiteQueen12       (9)\r
57 #define BlackKing12       (10)\r
58 #define WhiteKing12       (11)\r
59 \r
60 // functions\r
61 \r
62 extern void piece_init      ();\r
63 \r
64 extern bool piece_is_ok     (int piece);\r
65 \r
66 extern int  piece_make_pawn (int colour);\r
67 extern int  piece_pawn_opp  (int piece);\r
68 \r
69 extern int  piece_colour    (int piece);\r
70 extern int  piece_type      (int piece);\r
71 \r
72 extern bool piece_is_pawn   (int piece);\r
73 extern bool piece_is_knight (int piece);\r
74 extern bool piece_is_bishop (int piece);\r
75 extern bool piece_is_rook   (int piece);\r
76 extern bool piece_is_queen  (int piece);\r
77 extern bool piece_is_king   (int piece);\r
78 \r
79 extern bool piece_is_slider (int piece);\r
80 \r
81 extern int  piece_to_12     (int piece);\r
82 extern int  piece_from_12   (int piece);\r
83 \r
84 extern int  piece_to_char   (int piece);\r
85 extern int  piece_from_char (int c);\r
86 \r
87 extern bool char_is_piece   (int c);\r
88 \r
89 #endif // !defined PIECE_H\r
90 \r
91 // end of piece.h\r
92 \r