Author: Nicolas Carrasco
Date: 10:49:42 09/19/99
I think these two functions will simulate MIN-MAX (I know I don´t detect ilegal moves). I implemented this algorim myself. I also know I can reduce the use of gen() funtion. Is it working ok? I use: ///////////////////////////////////////////////////////SOURCE/////// void main(void) { search(3); print_board(); } int search(unsigned char depth) { int best= -120000; int score; unsigned char i; move_data move_best; gen(); for (i=0; i<move.number;i++) { make_move(move.b[i]); actual = -examine(depth-1); unmake_move(); gen(); if (score>best) { best = score; move_best.to = move.b.to; move_best.promote = move.b[i].promote; move_best.bits = move.b[i].bits; move_best.from = move.b[i].from; } } make_move(move_best); return best; } int examine(unsigned char depth) { int score; int best= -120000; unsigned char i; if (depth==0) { ++nodes; return eval(); } gen(); for(i=0;i<move.number;i++) { make_move(move.b[i]); actual = -examine(depth-1); unmake_move(); gen(); if (score>best) mejor = score; } return mejor; } /////////////////////////////////////STRUCTURES: struct move_data { unsigned char from; unsigned char to; unsigned char promote; unsigned char bits; }; struct move_list { move_data b[250]; unsigned char number; }; move_list move; ///////////////PROTOTYPES OF FUNCTIONS MENTIONED////////////////////// int eval(void); void print_board(void); BOOL make_move (move_data this_move); void unmake_move (void); void gen(void);
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.