Author: Michel Langeveld
Date: 13:09:08 11/24/01
Just a donate from me for everyone who might be interested:
#define PAWNGROUPS_PENALTY 30
#define PAWNISOLATED_PENALTY 30
#define PAWNPASSER_BONUS 80
#define PAWNDOUBLE_PENALTY 40
#define PAWNTRIPLE_PENALTY 110
///////////////////////////////////////////////////////////////////
//Pawn evaluation code by Michel Langeveld
///////////////////////////////////////////////////////////////////
//conist of:
//-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 ( blackGroup == 0 || (i != 7 &&
evalStructure.blackPawnsPlace[i+1] == 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.blackPawnsPlace[i] > 0 &&
evalStructure.whitePawnsPlace[i] == 0)
{
if ( whiteGroup == 0 ||
(i != 7 && evalStructure.whitePawnsPlace[i+1] == 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.