Author: Michel Langeveld
Date: 08:30:51 11/25/01
Go up one level in this thread
Fixed some errors in the passer code...
//grouping rule
//isolated pawns
//passers
//double and triple pawns
bool whiteGroup = false;
bool blackGroup = false;
int whiteGroups = 0;
int blackGroups = 0;
bool whiteIsolated = false;
bool blackIsolated = false;
for (int i=0; i<8; i++)
{
if (evalStructure.whitePawnsPlace[i] > 0)
{
//double pawns
if (evalStructure.whitePawnsPlace[i] == 2)
{
score -= PAWNDOUBLE_PENALTY;
}
if (evalStructure.whitePawnsPlace[i] == 3)
{
score -= PAWNTRIPLE_PENALTY;
}
//passer?
if (evalStructure.blackPawnsPlace[i] == 0)
{
if (
(i != 0 &&
evalStructure.blackPawnsPlace[i-1] == 0 &&
evalStructure.whitePawnsPlace[i-1] > 0 &&
evalStructure.blackPawnsPlace[i-2] == 0) ||
(i != 7 &&
evalStructure.blackPawnsPlace[i+1] == 0 &&
evalStructure.whitePawnsPlace[i+1] > 0 &&
evalStructure.whitePawnsPlace[i+2] == 0)
)
{
score += PAWNPASSER_BONUS;
}
}
//grouping rule and isolated pawns
if (whiteGroup == false)
{
whiteGroup = true;
whiteGroups++;
score -= PAWNGROUPS_PENALTY; //pawngroup bonus
whiteIsolated = true;
score -= PAWNISOLATED_PENALTY; //this pawn is isolated if nomore
follow
}
else
{
if (whiteIsolated)
{
whiteIsolated = false;
score += PAWNISOLATED_PENALTY;
}
}
}
else
{
whiteGroup = false;
whiteIsolated = false;
}
if (evalStructure.blackPawnsPlace[i] > 0)
{
//double pawns
if (evalStructure.blackPawnsPlace[i] == 2)
{
score += PAWNDOUBLE_PENALTY;
}
if (evalStructure.blackPawnsPlace[i] == 3)
{
score += PAWNTRIPLE_PENALTY;
}
//passer?
if (evalStructure.whitePawnsPlace[i] == 0)
{
if (
(i != 0 &&
evalStructure.whitePawnsPlace[i-1] == 0 &&
evalStructure.blackPawnsPlace[i-1] > 0 &&
evalStructure.blackPawnsPlace[i-2] == 0) ||
(i != 7 &&
evalStructure.whitePawnsPlace[i+1] == 0 &&
evalStructure.blackPawnsPlace[i+1] > 0 &&
evalStructure.blackPawnsPlace[i+2] == 0)
)
{
score -= PAWNPASSER_BONUS;
}
}
//grouping rule and isolated pawns
if (blackGroup == false)
{
blackGroup = true;
blackGroups++;
score += PAWNGROUPS_PENALTY; //pawngroup bonus
blackIsolated = true;
score += PAWNISOLATED_PENALTY; //this pawn is isolated if nomore
follow
}
else
{
if (blackIsolated)
{
blackIsolated = false;
score -= PAWNISOLATED_PENALTY;
}
}
}
else
{
blackGroup = false;
blackIsolated = false;
}
}
This page took 0.01 seconds to execute
Last modified: Thu, 15 Apr 21 08:11:13 -0700
Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.