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.