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