1: #include "old.h"
2:
3: bagen()
4: {
5: int *p1, *p2, v;
6:
7: p1 = lmp;
8: if((flag&010)!=0)
9: if(board[5]==0 && board[6]==0 && board[7]==4)
10: if(wattack(4) && wattack(5) && wattack(6))
11: btry(4, 0, 2); /* kingside castle */
12: if((flag&020)!=0)
13: if(board[0]==4 && board[1]==0 && board[2]==0 && board[3]==0)
14: if(wattack(2) && wattack(3) && wattack(4))
15: btry(4, 0, -2); /* queenside castle */
16: bgen();
17: p2 = p1;
18: while(p2 != lmp) {
19: v = *p2++;
20: bmove(*p2);
21: if(wattack(bkpos)) {
22: *p1++ = v;
23: *p1++ = *p2;
24: }
25: p2++;
26: bremove();
27: }
28: lmp = p1;
29: }
30:
31: btry(from, mask, offset)
32: int from, mask, offset;
33: {
34:
35: if((dir[from]&mask)==0)
36: bcheck(from, from+offset);
37: }
38:
39: bcheck(from, to)
40: int from, to;
41: {
42:
43: if(board[to]>0) return(1);
44: *lmp++ = (pval+6)[board[to]]-value;
45: *lmp++ = (from<<8)|to;
46: return(board[to] != 0);
47: }
48:
49: wagen()
50: {
51: int *p1, *p2, v;
52:
53: p1 = lmp;
54: if((flag&1)!=0)
55: if(board[61]==0 && board[62]==0 && board[63]== -4)
56: if(battack(60) && battack(61) && battack(62))
57: wtry(60, 0, 2); /* kingside castle */
58: if((flag&2)!=0)
59: if(board[56]== -4 && board[57]==0 && board[58]==0 && board[59]==0)
60: if(battack(58) && battack(59) && battack(60))
61: wtry(60, 0, -2); /* queenside castle */
62: wgen();
63: p2 = p1;
64: while(p2 != lmp) {
65: v = *p2++;
66: wmove(*p2);
67: if(battack(wkpos)) {
68: *p1++ = v;
69: *p1++ = *p2;
70: }
71: p2++;
72: wremove();
73: }
74: lmp = p1;
75: }
76:
77: wtry(from, mask, offset)
78: int from, mask, offset;
79: {
80:
81: if((dir[from]&mask)==0)
82: wcheck(from, from+offset);
83: }
84:
85: wcheck(from, to)
86: int from, to;
87: {
88:
89: if(board[to]<0) return(1);
90: *lmp++ = value-(pval+6)[board[to]];
91: *lmp++ = (from<<8)|to;
92: return(board[to] != 0);
93: }
Defined functions
bagen
defined in line
3; used 5 times
btry
defined in line
31; used 2 times
wagen
defined in line
49; used 5 times
wtry
defined in line
77; used 2 times