386BSD 0.1 development
[unix-history] / usr / othersrc / games / chess / move.h
CommitLineData
953f5044
WJ
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)
6extern short distdata[64][64];
7extern short taxidata[64][64];
8
9#define taxicab(a,b) taxidata[a][b]
10#define distance(a,b) distdata[a][b]
11
12extern void Initialize_dist();
13#endif
14
15#if (NEWMOVE >= 2)
16struct sqdata {
17 short nextpos;
18 short nextdir;
19};
20extern struct sqdata posdata[3][8][64][64];
21
22extern 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)
60extern short PieceList[2][16];
61
62extern int Sqatakd();
63#endif
64
65#if (NEWMOVE > 3)
66extern short Kfield[2][64],PINVAL,control[7],hung[2],XRAY;
67
68extern BRscan();
69#endif
70
71#if (NEWMOVE > 4)
72#define valueQ 1100
73
74extern short PieceCnt[2],value[7],svalue[64];
75
76extern CaptureList();
77#endif
78
79#if (NEWMOVE > 5)
80extern GenMoves();
81#endif