version 1.4w10UCIb16
[polyglot.git] / game.h
1 \r
2 // game.h\r
3 \r
4 #ifndef GAME_H\r
5 #define GAME_H\r
6 \r
7 // includes\r
8 \r
9 #include "board.h"\r
10 #include "move.h"\r
11 #include "util.h"\r
12 \r
13 // constants\r
14 \r
15 const int GameSize = 4096;\r
16 \r
17 enum status_t {\r
18    PLAYING,\r
19    WHITE_MATES,\r
20    BLACK_MATES,\r
21    STALEMATE,\r
22    DRAW_MATERIAL,\r
23    DRAW_FIFTY,\r
24    DRAW_REPETITION\r
25 };\r
26 \r
27 // types\r
28 \r
29 struct game_t {\r
30    board_t start_board[1];\r
31    board_t board[1];\r
32    sint16 size;\r
33    sint16 pos;\r
34    sint8 status;\r
35    move_t move[GameSize];\r
36    uint64 key[GameSize];\r
37 };\r
38 \r
39 // variables\r
40 \r
41 extern game_t Game[1];\r
42 \r
43 // functions\r
44 \r
45 extern bool game_is_ok     (const game_t * game);\r
46 \r
47 extern void game_clear     (game_t * game);\r
48 extern bool game_init      (game_t * game, const char fen[]);\r
49 \r
50 extern int  game_status    (const game_t * game);\r
51 \r
52 extern int  game_size      (const game_t * game);\r
53 extern int  game_pos       (const game_t * game);\r
54 extern int  game_move      (const game_t * game, int pos);\r
55 \r
56 extern void game_get_board (const game_t * game, board_t * board, int pos = -1);\r
57 extern int  game_turn      (const game_t * game);\r
58 extern int  game_move_nb   (const game_t * game);\r
59 \r
60 extern void game_add_move  (game_t * game, int move);\r
61 extern void game_rem_move  (game_t * game);\r
62 \r
63 extern void game_goto      (game_t * game, int pos);\r
64 \r
65 extern void game_disp      (const game_t * game);\r
66 \r
67 #endif // !defined GAME_H\r
68 \r
69 // end of game.h\r
70 \r