home *** CD-ROM | disk | FTP | other *** search
- /* Header file for checkers board data */
-
- #define EMPTY 0
- #define RED 1 /* you must not change these values */
- #define BLACK 2
- #define KING 4
-
- #define SQRS_MAX 35 /* number of squares on a board plus some */
-
- #define next(_t) ((_t&1)+1)
- #define CopyBoard(from,to) { int i; for (i=0; i<SQRS_MAX; i++) to[i] = from[i]; } 0
-
- typedef long SQUARE;
- typedef SQUARE FAR * BOARD;
- typedef unsigned int BOOK_ELEMENT;
-
-
- #define TYPE_RED0 1
- #define TYPE_RED2 2
- #define TYPE_BLACK0 3
- #define TYPE_BLACK2 4 /* do not change the order of these values */
- #define TYPE_RED_JUMP0 5
- #define TYPE_RED_JUMP2 6
- #define TYPE_BLACK_JUMP0 7
- #define TYPE_BLACK_JUMP2 8
-
- #define MakeMove_RED0(_b, _start) \
- _b[red_lut[_start][0]] = _b[_start];\
- _b[_start] = 0;\
- _b[red_lut[_start][0]] |= red_lut[_start][1]
- #define MakeMove_RED2(_b, _start) \
- _b[red_lut[_start][2]] = _b[_start];\
- _b[_start] = 0;\
- _b[red_lut[_start][2]] |= red_lut[_start][3]
- #define MakeMove_BLACK0(_b, _start) \
- _b[black_lut[_start][0]] = _b[_start];\
- _b[_start] = 0;\
- _b[black_lut[_start][0]] |= black_lut[_start][1]
- #define MakeMove_BLACK2(_b, _start) \
- _b[black_lut[_start][2]] = _b[_start];\
- _b[_start] = 0;\
- _b[black_lut[_start][2]] |= black_lut[_start][3]
-
- #define MakeMoveNoKing_RED_JUMP0(_b, _start) \
- _b[red_jump_lut[_start][1]] = _b[_start];\
- _b[_start] = 0;\
- _b[red_jump_lut[_start][0]] = 0
- #define MakeMoveNoKing_RED_JUMP2(_b, _start) \
- _b[red_jump_lut[_start][3]] = _b[_start];\
- _b[_start] = 0;\
- _b[red_jump_lut[_start][2]] = 0
- #define MakeMoveNoKing_BLACK_JUMP0(_b, _start) \
- _b[black_jump_lut[_start][1]] = _b[_start];\
- _b[_start] = 0;\
- _b[black_jump_lut[_start][0]] = 0
- #define MakeMoveNoKing_BLACK_JUMP2(_b, _start) \
- _b[black_jump_lut[_start][3]] = _b[_start];\
- _b[_start] = 0;\
- _b[black_jump_lut[_start][2]] = 0
-
- #define MakeMove_RED_JUMP0(_b, _start) \
- _b[red_jump_lut[_start][1]] = _b[_start];\
- _b[_start] = 0;\
- _b[red_jump_lut[_start][0]] = 0
- #define MakeMove_RED_JUMP2(_b, _start) \
- _b[red_jump_lut[_start][3]] = _b[_start];\
- _b[_start] = 0;\
- _b[red_jump_lut[_start][2]] = 0
- #define MakeMove_BLACK_JUMP0(_b, _start) \
- _b[black_jump_lut[_start][1]] = _b[_start];\
- _b[_start] = 0;\
- _b[black_jump_lut[_start][0]] = 0
- #define MakeMove_BLACK_JUMP2(_b, _start) \
- _b[black_jump_lut[_start][3]] = _b[_start];\
- _b[_start] = 0;\
- _b[black_jump_lut[_start][2]] = 0
-
-
-
- // ----- callable Functions in the engine
- long PlayBestMove(BOARD b, int t, int j, int d,
- int prune_depth, int prune_size, int max_depth);
- int GameOver(BOARD b, int t);
- int MoveValid(BOARD b, int start, int dest, int t);
- long QualityOfBoard(BOARD b,int t);
- char* TextizeBoard(BOARD b);
-
-