Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: HELP IMPLEMENTING MIN-MAX

Author: Daniel Karlsson

Date: 22:02:28 09/18/99

Go up one level in this thread


On September 18, 1999 at 14:59:53, Nicolas Carrasco wrote:

>I would be extreamly pleased to be helped on implementing a simple MIN-MAX
>searching function to my program.
>
>///////////////////////////DATA/////////////////////////////
>#define BOOL        char
>
>struct move_list {
> move_data b[250];
> unsigned char number;
>};
>
>struct move_data {
> unsigned char from;
> unsigned char to;
> unsigned char promote;
> unsigned char bits;
>};
>
>move_list move; // GEN post moves here EXAMPLE: move.b[xxx].to
>
>BOOL make_move(move_data)
>void unmake_move(void);
>int eval (void) // ONLY MATERIAL
>
>///////////////////////////END OF DATA/////////////////////////////
>
>PLEASE POST A SEARCH FUNCTION HERE!!!!!!!!!!!!!!!!

int NegaMax(int alpha, int beta, int depth)
{
	int i, n_moves;
	struct move_data movelist[MAX_MOVES];

	if (depth == 0)
		return eval();

	n_moves = generate_moves(movelist); // returns number of moves generated
	sort_moves(movelist, n_moves);

	for (i = 0; i < n_moves; i++)
		if (make_move(movelist[i])) {
			val = -NegaMax(-beta, -alpha, depth - 1);
			undo_move();
			if (val > alpha) {
				alpha = val;
				if (val >= beta)
					return beta;
			}
		}

	return alpha;
}

You will likely need some kind of iterative deepening root search function and
some other stuff too. Read some of the pages in the Resource Center.

Note: this is not a very efficient piece of code. Can't guarantee it works
either :-)



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.