Add forgotten files 1.4.70b
[polyglot.git] / piece.h
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