home *** CD-ROM | disk | FTP | other *** search
- #include "old.h"
-
- /*
- * mobility
- * 1 for each potential move
- */
-
- bheur1()
- {
-
- return(-wheur1());
- }
-
- /*
- * opening 'goodies'
- * 10 for each minor piece out
- * -10 for blocking kq pawns
- */
-
- bheur2()
- {
- int i, mt;
-
- i = 0;
- if(game > 2) return(i);
- mt = amp[-1];
- if(mt == 2 || mt == 3) i =+ 30;
- if(mt == 0) i =- 20;
- i =+ 9*((board[1] != 2)+
- (board[6] != 2));
- i =+ 8*((board[2] != 3)+
- (board[5] != 3));
-
- /*
- * -10 for blocked central pawns
- */
- if(board[11]==1 && board[11+8]!=0) i =- 10;
- if(board[12]==1 && board[12+8]!=0) i =- 10;
- return(i);
- }
-
- /*
- * ability to castle
- * 22 for both flags
- * 20 for one flag
- */
-
- bheur3()
- {
- int i;
-
- i = 0;
- /*
- * queenside ability
- */
- if(flag&020 && board[8]==1 && board[9]==1 && board[10]==1)
- i =+ 20;
- /*
- * kingside ability
- */
- if(flag&010 && board[13]==1 && board[14]==1 && board[15]==1)
- i =+ 20;
- /*
- * if both
- */
- if(i == 40)
- i = 22;
- /*
- * if castled,
- * keep pawns in
- */
- if(bkpos==2)
- if(board[10]==1 && (board[8]==1 || board[8+8]==1) &&
- (board[9]==1 || board[9+8]==1))
- i =+ 40;
- if(bkpos==6)
- if(board[13]==1 && (board[14]==1 || board[14+8]==1) &&
- (board[15]== -1 || board[15+8]== -1))
- i =+ 40;
- return(i);
- }
-
- /*
- * prance
- * a percentage if the
- * piece on the move
- * can be driven back
- * by a smaller piece
- */
-
- bheur4()
- {
- int *p1, *p2, ploc, i;
-
- if(amp[-1] != 1) return(0);
- ploc = amp[-3];
- if(board[ploc] == 1) return(0);
- if(xheur(ploc)) return(0);
- p1 = lmp;
- p2 = p1;
- wagen();
- i = 0;
- while(p2 != lmp) {
- p2++;
- wmove(*p2++);
- i = xheur(ploc);
- wremove();
- if(i)
- break;
- }
- lmp = p1;
- return(-i);
- }
-
- /*
- * control
- * center control
- * opening
- * beginning
- * king control
- * middle
- * end
- */
-
- bheur5()
- {
-
- return(-wheur5());
- }
-
- /*
- * mate threat
- * bad to capture
- */
- bheur6()
- {
- int i;
-
- *amp++ = -1;
- i = 0;
- if(battack(wkpos))
- if(mate(2, 0))
- i =+ 15;
- amp--;
- return(i);
- }
-