1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
|
// board.h
#ifndef BOARD_H
#define BOARD_H
// includes
#include "colour.h"
#include "square.h"
#include "util.h"
// defines
#define Empty 0
#define SideH 0
#define SideA 1
#define SideNb 2
// types
typedef struct {
uint8 square[SquareNb];
sint8 pos[SquareNb];
uint8 list[ColourNb][32];
sint8 list_size[ColourNb];
sint8 number[12];
sint8 turn;
uint8 castle[ColourNb][SideNb];
uint8 ep_square;
sint16 ply_nb;
sint16 move_nb;
uint64 key;
} board_t;
// functions
extern bool board_is_ok (const board_t * board);
extern void board_clear (board_t * board);
extern void board_start (board_t * board);
extern void board_copy (board_t * dst, const board_t * src);
extern bool board_equal (const board_t * board_1, const board_t * board_2);
extern bool board_has_queen (const board_t * board, int colour);
extern void board_init_list (board_t * board);
extern int board_flags (const board_t * board);
extern bool board_can_play (const board_t * board);
extern int board_mobility (const board_t * board);
extern bool board_is_check (const board_t * board);
extern bool board_is_mate (const board_t * board);
extern bool board_is_stalemate (const board_t * board);
extern int king_pos (const board_t * board, int colour);
extern void board_disp (const board_t * board);
#endif // !defined BOARD_H
// end of board.h
|