~ubuntu-branches/ubuntu/utopic/fruit/utopic

« back to all changes in this revision

Viewing changes to src/piece.h

  • Committer: Bazaar Package Importer
  • Author(s): Oliver Korff
  • Date: 2005-10-07 19:40:10 UTC
  • Revision ID: james.westby@ubuntu.com-20051007194010-a99a9utegtl89htk
Tags: upstream-2.1
ImportĀ upstreamĀ versionĀ 2.1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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
// constants
 
13
 
 
14
const int WhitePawnFlag = 1 << 2;
 
15
const int BlackPawnFlag = 1 << 3;
 
16
const int KnightFlag    = 1 << 4;
 
17
const int BishopFlag    = 1 << 5;
 
18
const int RookFlag      = 1 << 6;
 
19
const int KingFlag      = 1 << 7;
 
20
 
 
21
const int PawnFlags  = WhitePawnFlag | BlackPawnFlag;
 
22
const int QueenFlags = BishopFlag | RookFlag;
 
23
 
 
24
const int PieceNone64 = 0;
 
25
const int WhitePawn64 = WhitePawnFlag;
 
26
const int BlackPawn64 = BlackPawnFlag;
 
27
const int Knight64    = KnightFlag;
 
28
const int Bishop64    = BishopFlag;
 
29
const int Rook64      = RookFlag;
 
30
const int Queen64     = QueenFlags;
 
31
const int King64      = KingFlag;
 
32
 
 
33
const int PieceNone256   = 0;
 
34
const int WhitePawn256   = WhitePawn64 | WhiteFlag;
 
35
const int BlackPawn256   = BlackPawn64 | BlackFlag;
 
36
const int WhiteKnight256 = Knight64    | WhiteFlag;
 
37
const int BlackKnight256 = Knight64    | BlackFlag;
 
38
const int WhiteBishop256 = Bishop64    | WhiteFlag;
 
39
const int BlackBishop256 = Bishop64    | BlackFlag;
 
40
const int WhiteRook256   = Rook64      | WhiteFlag;
 
41
const int BlackRook256   = Rook64      | BlackFlag;
 
42
const int WhiteQueen256  = Queen64     | WhiteFlag;
 
43
const int BlackQueen256  = Queen64     | BlackFlag;
 
44
const int WhiteKing256   = King64      | WhiteFlag;
 
45
const int BlackKing256   = King64      | BlackFlag;
 
46
const int PieceNb        = 256;
 
47
 
 
48
const int WhitePawn12   =  0;
 
49
const int BlackPawn12   =  1;
 
50
const int WhiteKnight12 =  2;
 
51
const int BlackKnight12 =  3;
 
52
const int WhiteBishop12 =  4;
 
53
const int BlackBishop12 =  5;
 
54
const int WhiteRook12   =  6;
 
55
const int BlackRook12   =  7;
 
56
const int WhiteQueen12  =  8;
 
57
const int BlackQueen12  =  9;
 
58
const int WhiteKing12   = 10;
 
59
const int BlackKing12   = 11;
 
60
 
 
61
// macros
 
62
 
 
63
#define PAWN_MAKE(colour)        (PawnMake[colour])
 
64
#define PAWN_OPP(pawn)           ((pawn)^(WhitePawn256^BlackPawn256))
 
65
 
 
66
#define PIECE_COLOUR(piece)      (((piece)&3)-1)
 
67
#define PIECE_TYPE(piece)        ((piece)&~3)
 
68
 
 
69
#define PIECE_IS_PAWN(piece)     (((piece)&PawnFlags)!=0)
 
70
#define PIECE_IS_KNIGHT(piece)   (((piece)&KnightFlag)!=0)
 
71
#define PIECE_IS_BISHOP(piece)   (((piece)&QueenFlags)==BishopFlag)
 
72
#define PIECE_IS_ROOK(piece)     (((piece)&QueenFlags)==RookFlag)
 
73
#define PIECE_IS_QUEEN(piece)    (((piece)&QueenFlags)==QueenFlags)
 
74
#define PIECE_IS_KING(piece)     (((piece)&KingFlag)!=0)
 
75
#define PIECE_IS_SLIDER(piece)   (((piece)&QueenFlags)!=0)
 
76
 
 
77
#define PIECE_TO_12(piece)       (PieceTo12[piece])
 
78
 
 
79
#define PIECE_ORDER(piece)       (PieceOrder[piece])
 
80
 
 
81
#define PAWN_MOVE_INC(colour)    (PawnMoveInc[colour])
 
82
#define PIECE_INC(piece)         (PieceInc[piece])
 
83
 
 
84
// types
 
85
 
 
86
typedef int inc_t;
 
87
 
 
88
// "constants"
 
89
 
 
90
extern const int PawnMake[ColourNb];
 
91
extern const int PieceFrom12[12];
 
92
 
 
93
extern const inc_t PawnMoveInc[ColourNb];
 
94
 
 
95
extern const inc_t KnightInc[8+1];
 
96
extern const inc_t BishopInc[4+1];
 
97
extern const inc_t RookInc[4+1];
 
98
extern const inc_t QueenInc[8+1];
 
99
extern const inc_t KingInc[8+1];
 
100
 
 
101
// variables
 
102
 
 
103
extern int PieceTo12[PieceNb];
 
104
extern int PieceOrder[PieceNb];
 
105
 
 
106
extern const inc_t * PieceInc[PieceNb];
 
107
 
 
108
// functions
 
109
 
 
110
extern void piece_init      ();
 
111
 
 
112
extern bool piece_is_ok     (int piece);
 
113
 
 
114
extern int  piece_from_12   (int piece_12);
 
115
 
 
116
extern int  piece_to_char   (int piece);
 
117
extern int  piece_from_char (int c);
 
118
 
 
119
#endif // !defined PIECE_H
 
120
 
 
121
// end of piece.h
 
122