1: #include "old.h"
2:
3: /*
4: * mobility
5: * 1 for each potential move
6: */
7:
8: bheur1()
9: {
10:
11: return(-wheur1());
12: }
13:
14: /*
15: * opening 'goodies'
16: * 10 for each minor piece out
17: * -10 for blocking kq pawns
18: */
19:
20: bheur2()
21: {
22: int i, mt;
23:
24: i = 0;
25: if(game > 2) return(i);
26: mt = amp[-1];
27: if(mt == 2 || mt == 3) i += 30;
28: if(mt == 0) i -= 20;
29: i += 9*((board[1] != 2)+
30: (board[6] != 2));
31: i += 8*((board[2] != 3)+
32: (board[5] != 3));
33:
34: /*
35: * -10 for blocked central pawns
36: */
37: if(board[11]==1 && board[11+8]!=0) i -= 10;
38: if(board[12]==1 && board[12+8]!=0) i -= 10;
39: return(i);
40: }
41:
42: /*
43: * ability to castle
44: * 22 for both flags
45: * 20 for one flag
46: */
47:
48: bheur3()
49: {
50: int i;
51:
52: i = 0;
53: /*
54: * queenside ability
55: */
56: if(flag&020 && board[8]==1 && board[9]==1 && board[10]==1)
57: i += 20;
58: /*
59: * kingside ability
60: */
61: if(flag&010 && board[13]==1 && board[14]==1 && board[15]==1)
62: i += 20;
63: /*
64: * if both
65: */
66: if(i == 40)
67: i = 22;
68: /*
69: * if castled,
70: * keep pawns in
71: */
72: if(bkpos==2)
73: if(board[10]==1 && (board[8]==1 || board[8+8]==1) &&
74: (board[9]==1 || board[9+8]==1))
75: i += 40;
76: if(bkpos==6)
77: if(board[13]==1 && (board[14]==1 || board[14+8]==1) &&
78: (board[15]== -1 || board[15+8]== -1))
79: i += 40;
80: return(i);
81: }
82:
83: /*
84: * prance
85: * a percentage if the
86: * piece on the move
87: * can be driven back
88: * by a smaller piece
89: */
90:
91: bheur4()
92: {
93: int *p1, *p2, ploc, i;
94:
95: if(amp[-1] != 1) return(0);
96: ploc = amp[-3];
97: if(board[ploc] == 1) return(0);
98: if(xheur(ploc)) return(0);
99: p1 = lmp;
100: p2 = p1;
101: wagen();
102: i = 0;
103: while(p2 != lmp) {
104: p2++;
105: wmove(*p2++);
106: i = xheur(ploc);
107: wremove();
108: if(i)
109: break;
110: }
111: lmp = p1;
112: return(-i);
113: }
114:
115: /*
116: * control
117: * center control
118: * opening
119: * beginning
120: * king control
121: * middle
122: * end
123: */
124:
125: bheur5()
126: {
127:
128: return(-wheur5());
129: }
130:
131: /*
132: * mate threat
133: * bad to capture
134: */
135: bheur6()
136: {
137: int i;
138:
139: *amp++ = -1;
140: i = 0;
141: if(battack(wkpos))
142: if(mate(2, 0))
143: i += 15;
144: amp--;
145: return(i);
146: }
Defined functions
bheur1
defined in line
8; used 2 times