pkgsrc/games/exchess/patches/patch-ai
2013-04-30 22:20:58 +00:00

157 lines
6.3 KiB
Text

$NetBSD: patch-ai,v 1.3 2013/04/30 22:20:58 joerg Exp $
--- exmove.cpp.orig 2000-04-01 07:46:42.000000000 +0000
+++ exmove.cpp
@@ -8,7 +8,7 @@
#include "const.h"
#include "funct.h"
#include "hash.h"
-#include "iostream.h"
+#include <iostream>
/* Hash code variables */
extern hash_rec *hash_table; // pointer to hash_table
@@ -37,7 +37,7 @@ inline int simple_check(position *p, int
// If the move is legal, the function returns a 1, otherwise 0.
// Note that the move is made, regardless - so proper precautions
// need to be taken, if the move might need to be undone
-int exec_move(position *p, move emove, int ply)
+int exec_move(position *p, my_move emove, int ply)
{
register int pi;
// if this is a castle, check that it is legal then
@@ -52,8 +52,8 @@ int exec_move(position *p, move emove, i
{ return 0; }
p->sq[5] = p->sq[7];
p->sq[7] = empty;
- or(p->hcode, hval[WROOK][5]);
- or(p->hcode, hval[WROOK][7]);
+ hash_or(p->hcode, hval[WROOK][5]);
+ hash_or(p->hcode, hval[WROOK][7]);
p->has_castled[1] = 1;
/* update piece list */
for(pi=1;pi<=p->plist[p->wtm][ROOK][0];pi++)
@@ -69,8 +69,8 @@ int exec_move(position *p, move emove, i
{ return 0; }
p->sq[3] = p->sq[0];
p->sq[0] = empty;
- or(p->hcode, hval[WROOK][3]);
- or(p->hcode, hval[WROOK][0]);
+ hash_or(p->hcode, hval[WROOK][3]);
+ hash_or(p->hcode, hval[WROOK][0]);
p->has_castled[1] = 1;
/* update piece list */
for(pi=1;pi<=p->plist[p->wtm][ROOK][0];pi++)
@@ -86,8 +86,8 @@ int exec_move(position *p, move emove, i
{ return 0; }
p->sq[61] = p->sq[63];
p->sq[63] = empty;
- or(p->hcode, hval[BROOK][61]);
- or(p->hcode, hval[BROOK][63]);
+ hash_or(p->hcode, hval[BROOK][61]);
+ hash_or(p->hcode, hval[BROOK][63]);
p->has_castled[0] = 1;
/* update piece list */
for(pi=1;pi<=p->plist[p->wtm][ROOK][0];pi++)
@@ -103,8 +103,8 @@ int exec_move(position *p, move emove, i
{ return 0; }
p->sq[59] = p->sq[56];
p->sq[56] = empty;
- or(p->hcode, hval[BROOK][59]);
- or(p->hcode, hval[BROOK][56]);
+ hash_or(p->hcode, hval[BROOK][59]);
+ hash_or(p->hcode, hval[BROOK][56]);
p->has_castled[0] = 1;
/* update piece list */
for(pi=1;pi<=p->plist[p->wtm][ROOK][0];pi++)
@@ -125,7 +125,7 @@ int exec_move(position *p, move emove, i
if(p->sq[emove.b.to].type) {
// Remove hashcode for the target square
- or(p->hcode, hval[ID(p->sq[emove.b.to])][emove.b.to]);
+ hash_or(p->hcode, hval[ID(p->sq[emove.b.to])][emove.b.to]);
// Remove piece from piece list
for(pi=1;pi<=p->plist[p->wtm^1][p->sq[emove.b.to].type][0];pi++)
if(p->plist[p->wtm^1][p->sq[emove.b.to].type][pi] == emove.b.to) {
@@ -143,8 +143,8 @@ int exec_move(position *p, move emove, i
// Move the new piece to the target square
p->sq[emove.b.to] = p->sq[emove.b.from];
// Update the hash code to reflect the move
- or(p->hcode, hval[ID(p->sq[emove.b.from])][emove.b.from]);
- or(p->hcode, hval[ID(p->sq[emove.b.from])][emove.b.to]);
+ hash_or(p->hcode, hval[ID(p->sq[emove.b.from])][emove.b.from]);
+ hash_or(p->hcode, hval[ID(p->sq[emove.b.from])][emove.b.to]);
// Original square is now empty
p->sq[emove.b.from] = empty;
@@ -152,7 +152,7 @@ int exec_move(position *p, move emove, i
if(emove.b.type&EP) {
if(p->wtm) {
p->sq[emove.b.to-8] = empty;
- or(p->hcode, hval[BPAWN][emove.b.to-8]);
+ hash_or(p->hcode, hval[BPAWN][emove.b.to-8]);
// Update piece lists
for(pi=1;pi<=p->plist[p->wtm^1][PAWN][0];pi++)
if(p->plist[BLACK][PAWN][pi] == emove.b.to-8) {
@@ -163,7 +163,7 @@ int exec_move(position *p, move emove, i
}
} else {
p->sq[emove.b.to+8] = empty;
- or(p->hcode, hval[WPAWN][emove.b.to+8]);
+ hash_or(p->hcode, hval[WPAWN][emove.b.to+8]);
// Update piece lists
for(pi=1;pi<=p->plist[p->wtm^1][PAWN][0];pi++)
if(p->plist[WHITE][PAWN][pi] == emove.b.to+8) {
@@ -189,7 +189,7 @@ int exec_move(position *p, move emove, i
// if the move is a promotion, promote it
if(emove.b.type&PROMOTE) {
// Remove the pawn from the hash code
- or(p->hcode, hval[ID(p->sq[emove.b.to])][emove.b.to]);
+ hash_or(p->hcode, hval[ID(p->sq[emove.b.to])][emove.b.to]);
// Change the piece type to the promoted piece
p->sq[emove.b.to].type = emove.b.promote;
// Add the new piece to the piece lists
@@ -206,7 +206,7 @@ int exec_move(position *p, move emove, i
// adjust material score
p->material += value[emove.b.promote] - value[PAWN];
// add piece to hash code
- or(p->hcode, hval[ID(p->sq[emove.b.to])][emove.b.to]);
+ hash_or(p->hcode, hval[ID(p->sq[emove.b.to])][emove.b.to]);
// adjust total piece count
p->pieces[p->wtm]++;
}
@@ -214,11 +214,11 @@ int exec_move(position *p, move emove, i
// update position characteristics
p->wtm = p->wtm^1;
p->material = -p->material;
- or(p->hcode, btm); or(p->hcode, wtm);
+ hash_or(p->hcode, btm); hash_or(p->hcode, wtm);
// undo hash code for en-passant and castling status
- or(p->hcode, ep_code[p->ep]);
- or(p->hcode, castle_code[p->castle]);
+ hash_or(p->hcode, ep_code[p->ep]);
+ hash_or(p->hcode, castle_code[p->castle]);
// if move is a pawn push 2 spaces, set en passant flag
if((emove.b.type&PAWN_PUSH2) &&
@@ -235,8 +235,8 @@ int exec_move(position *p, move emove, i
p->last = emove;
// update hash code for en-passant and castling status
- or(p->hcode, ep_code[p->ep]);
- or(p->hcode, castle_code[p->castle]);
+ hash_or(p->hcode, ep_code[p->ep]);
+ hash_or(p->hcode, castle_code[p->castle]);
// check whether other side is placed in check
int ptype = p->sq[emove.b.to].type;
@@ -270,7 +270,7 @@ int exec_move(position *p, move emove, i
// Function to make the move in the q-search
// - much simpler
-int qexec_move(position *p, move emove, int ply)
+int qexec_move(position *p, my_move emove, int ply)
{
register int pi;