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 74