Author: Andrew Williams
Date: 08:02:38 08/09/01
Go up one level in this thread
On August 09, 2001 at 10:48:18, Dieter Buerssner wrote: >On August 09, 2001 at 10:05:42, Andrew Williams wrote: > >>Here's my implementation of this in PostModernist: >> >>if(ply < (DEPTH-3)) { >> int m; >> >> for(m=plystart[ply]; m < plystart[ply+1]; m++) { >> make_move(tree[m].mv); >> if(in_check(OTHERSIDE(whoseTurn))) { >> unmake_move(); >> continue; >> } >> // Probe the TT. If found, react appropriately! >> ttr = tt_probe(); >> if(ttr != NULL) { >> if(beta <= -ttr->beta && ttr->betaDraft >= (draft-1)) { >> unmake_move(); >> return -ttr->beta; >> } >> } >> unmake_move(); >> } >>} > >Perhaps, I don't understand this correctly. Don't you ignore all possible search >extensions, that might be triggered by the move here. > >Or is the "if(in_check(OTHERSIDE(whoseTurn)))" taking care of the check >extension. (I am not totally sure, whose turn it is ...) It could also mean, >that this is just the legality check. Or do you generate only legal moves? > >Regards, >Dieter Hi, I'm not completely sure I understand what you're asking. The if(in_check(OTHERSIDE(whoseTurn))) test is checking for an illegal position (ie if the move leaves the side moving in check). Assuming the move isn't illegal, I make the move and check the hash table for the resulting position (yes, I know it would be better to just update the hash key, but I haven't got round to that yet). Then I do the same check for drafts that I do at the top of my alphabeta() function, except that I reduce the draft I'm testing against by 1. I'm not sure if this answers the question? Andrew
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.