home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Source Code 1993 July / THE_SOURCE_CODE_CD_ROM.iso / bsd_srcs / games / chess / move.h < prev    next >
Encoding:
C/C++ Source or Header  |  1990-06-01  |  1.5 KB  |  82 lines

  1. /* header file for move generator hes 890318
  2.    Modified: 890510 minor bug fixed in Newataks
  3.              890606 NEWMOVE levels 1-6 */
  4.  
  5. #if (NEWMOVE >= 1)
  6. extern short distdata[64][64];
  7. extern short taxidata[64][64];
  8.  
  9. #define taxicab(a,b) taxidata[a][b]
  10. #define distance(a,b) distdata[a][b]
  11.  
  12. extern void Initialize_dist();
  13. #endif
  14.   
  15. #if (NEWMOVE >= 2)
  16. struct sqdata {
  17.   short nextpos;
  18.   short nextdir;
  19. };
  20. extern struct sqdata posdata[3][8][64][64];
  21.  
  22. extern void Initialize_moves();
  23.  
  24. #define ataks(side,a)\
  25. {\
  26.   register short u,c,sq;\
  27.   register struct sqdata *p;\
  28.   short i,piece,*PL;\
  29.   \
  30.   for (u = 64; u; a[--u] = 0); \
  31.   PL = PieceList[side];\
  32.   for (i = 0; i <= PieceCnt[side]; i++)\
  33.     {\
  34.       sq = PL[i];\
  35.       piece = board[sq];\
  36.       c = control[piece];\
  37.       p = posdata[side][piece][sq];\
  38.       if (piece == pawn) {\
  39.     u = p[sq].nextdir; /* follow captures thread */\
  40.     while (u != sq) {\
  41.       a[u] = ++a[u] | c;\
  42.       u = p[u].nextdir;\
  43.     }\
  44.       }\
  45.       else {\
  46.     u = p[sq].nextpos;\
  47.     while (u != sq) {\
  48.           a[u] = ++a[u] | c;\
  49.       if (color[u] == neutral)\
  50.         u = p[u].nextpos;\
  51.       else\
  52.         u = p[u].nextdir;\
  53.     }\
  54.       }\
  55.     }\
  56. }
  57. #endif
  58.  
  59. #if (NEWMOVE >= 3)
  60. extern short PieceList[2][16];
  61.  
  62. extern int Sqatakd();
  63. #endif
  64.  
  65. #if (NEWMOVE > 3)
  66. extern short Kfield[2][64],PINVAL,control[7],hung[2],XRAY;
  67.  
  68. extern BRscan();
  69. #endif
  70.  
  71. #if (NEWMOVE > 4)
  72. #define valueQ 1100
  73.  
  74. extern short PieceCnt[2],value[7],svalue[64];
  75.  
  76. extern CaptureList();
  77. #endif
  78.  
  79. #if (NEWMOVE > 5)
  80. extern GenMoves();
  81. #endif
  82.