forked from ulthiel/polyglot
-
Notifications
You must be signed in to change notification settings - Fork 0
/
board.h
72 lines (44 loc) · 1.42 KB
/
board.h
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
// 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