Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: SEE 101

Author: Stuart Cracraft

Date: 09:06:34 08/06/04

Go up one level in this thread


On August 06, 2004 at 04:48:46, Andreas Guettinger wrote:

>You need an array mat_value[12] with the points for queen, rook etc..
>mat_value[13] = {0, -900, -500, -300, -300, -100, 0, 100, 300, 300, 500, 900,
>0};
>
>Then a counter and an array where you store the score after each step.
>counter = 0;
>swap_score[];
>
>
>// reslove SEE
>	int stm = 1;        // side
>	int gain = stm*mat_value[capturedfig + 6];
>	swap_score[0] = gain;
>	stm = -stm;
>	int next_fig = movingfig;
>	int counter = 1;
>
>
>	// look for hidden figure
>	// produce a move vector form source to target square, go along this vector
>        // from the captured piece to the border to find hidden pieces
>
>	// next figure, from the back of the att/def arrays to the front
>	for (;;)
>	{
>		if (defno > 0)
>		{
>			gain = gain + stm*mat_value[next_fig+6];
>			swap_score[counter] = gain;
>			stm = -stm;
>			counter++;
>			defno--;
>
>			// look for new defenders
>                        // ....
>		}
>		else
>			break;  // no more defenders
>
>		if (attno > 0)
>		{
>			gain = gain + stm*mat_value[next_fig+6];
>			swap_score[counter] = gain;
>			stm = -stm;
>			counter++;
>			attno--;
>
>			// look for new attackers
>                        // ....
>		}
>		else
>			break;     // no more attackers
>	}
>
>	// minimax through swap_scores from back to top
>        // back up swap_scores if there is  a gain, else stand pat
>	stm = -stm;
>	counter--;
>	while(counter)
>	{
>		if (stm < 0)
>		{
>			if(swap_score[counter] <= swap_score[counter-1])
>				swap_score[counter-1] = swap_score[counter];        // else stand pat
>		}
>		else
>		{
>			if(swap_score[counter] >= swap_score[counter-1])
>				swap_score[counter-1] = swap_score[counter];       // else stand pat
>		}
>		counter--;
>		stm = -stm;
>	}
>
>
>	return (swap_score[0]);
>
>Hope that helps a bit. It's difficult to explain how the stand pat works, just
>take an actual attack position an work trough the swap scores.
>
>regards
>Andy

Most helpful -- thank you. I will have to study it through the weekend.
It is the final loop that I need to understand more of. It looks like if
the next piece in line to be traded is <= what is being traded is the
concern, meaning a bad exchange. I hope I am reading that right.

Stuart



This page took 0 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.