home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / msdn_vcb / samples / vc98 / sdk / dbmsg / mapi / checkers.frm / check.h next >
Encoding:
C/C++ Source or Header  |  1996-04-11  |  3.4 KB  |  88 lines

  1. /* Header file for checkers board data */
  2.  
  3. #define EMPTY   0
  4. #define RED     1           /* you must not change these values */
  5. #define BLACK   2
  6. #define KING    4
  7.  
  8. #define SQRS_MAX    35  /* number of squares on a board plus some */
  9.  
  10. #define next(_t)    ((_t&1)+1)
  11. #define CopyBoard(from,to) { int i; for (i=0; i<SQRS_MAX; i++) to[i] = from[i]; } 0
  12.  
  13. typedef long SQUARE;
  14. typedef SQUARE FAR * BOARD;
  15. typedef unsigned int BOOK_ELEMENT;
  16.  
  17.  
  18. #define TYPE_RED0           1
  19. #define TYPE_RED2           2
  20. #define TYPE_BLACK0         3
  21. #define TYPE_BLACK2         4 /* do not change the order of these values */
  22. #define TYPE_RED_JUMP0      5
  23. #define TYPE_RED_JUMP2      6
  24. #define TYPE_BLACK_JUMP0    7
  25. #define TYPE_BLACK_JUMP2    8
  26.  
  27. #define MakeMove_RED0(_b, _start) \
  28.             _b[red_lut[_start][0]]  = _b[_start];\
  29.             _b[_start]              = 0;\
  30.             _b[red_lut[_start][0]] |= red_lut[_start][1]
  31. #define MakeMove_RED2(_b, _start) \
  32.             _b[red_lut[_start][2]]  = _b[_start];\
  33.             _b[_start]              = 0;\
  34.             _b[red_lut[_start][2]] |= red_lut[_start][3]
  35. #define MakeMove_BLACK0(_b, _start) \
  36.             _b[black_lut[_start][0]]  = _b[_start];\
  37.             _b[_start]                = 0;\
  38.             _b[black_lut[_start][0]] |= black_lut[_start][1]
  39. #define MakeMove_BLACK2(_b, _start) \
  40.             _b[black_lut[_start][2]]  = _b[_start];\
  41.             _b[_start]                = 0;\
  42.             _b[black_lut[_start][2]] |= black_lut[_start][3]
  43.  
  44. #define MakeMoveNoKing_RED_JUMP0(_b, _start) \
  45.             _b[red_jump_lut[_start][1]]  = _b[_start];\
  46.             _b[_start]                   = 0;\
  47.             _b[red_jump_lut[_start][0]]  = 0
  48. #define MakeMoveNoKing_RED_JUMP2(_b, _start) \
  49.             _b[red_jump_lut[_start][3]]  = _b[_start];\
  50.             _b[_start]                   = 0;\
  51.             _b[red_jump_lut[_start][2]]  = 0
  52. #define MakeMoveNoKing_BLACK_JUMP0(_b, _start) \
  53.             _b[black_jump_lut[_start][1]]  = _b[_start];\
  54.             _b[_start]                     = 0;\
  55.             _b[black_jump_lut[_start][0]]  = 0
  56. #define MakeMoveNoKing_BLACK_JUMP2(_b, _start) \
  57.             _b[black_jump_lut[_start][3]]  = _b[_start];\
  58.             _b[_start]                   = 0;\
  59.             _b[black_jump_lut[_start][2]]  = 0
  60.  
  61. #define MakeMove_RED_JUMP0(_b, _start) \
  62.             _b[red_jump_lut[_start][1]]  = _b[_start];\
  63.             _b[_start]                   = 0;\
  64.             _b[red_jump_lut[_start][0]]  = 0
  65. #define MakeMove_RED_JUMP2(_b, _start) \
  66.             _b[red_jump_lut[_start][3]]  = _b[_start];\
  67.             _b[_start]                   = 0;\
  68.             _b[red_jump_lut[_start][2]]  = 0
  69. #define MakeMove_BLACK_JUMP0(_b, _start) \
  70.             _b[black_jump_lut[_start][1]]  = _b[_start];\
  71.             _b[_start]                     = 0;\
  72.             _b[black_jump_lut[_start][0]]  = 0
  73. #define MakeMove_BLACK_JUMP2(_b, _start) \
  74.             _b[black_jump_lut[_start][3]]  = _b[_start];\
  75.             _b[_start]                   = 0;\
  76.             _b[black_jump_lut[_start][2]]  = 0
  77.  
  78.  
  79.  
  80. // ----- callable Functions in the engine
  81. long PlayBestMove(BOARD b, int t, int j, int d,
  82.                     int prune_depth, int prune_size, int max_depth);
  83. int GameOver(BOARD b, int t);
  84. int MoveValid(BOARD b, int start, int dest, int t);
  85. long QualityOfBoard(BOARD b,int t);
  86. char* TextizeBoard(BOARD b);
  87.  
  88.