Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: To check or not to check, this is the quiescence question

Author: Tord Romstad

Date: 09:14:14 10/12/03

Go up one level in this thread


On October 12, 2003 at 11:49:49, Omid David Tabibi wrote:

>I believe this will result in some speedup in normal search, but the big issue
>in doing checks in quiescence will still remain generating checking moves not
>check evasions. I haven't found a good way for doing so using the 32 bit attack
>tables.

In your eval, do some ray tracing from the king's position to determine the
squares
where the opponent's pieces would check the king, and to locate pieces which
threaten to deliver a discovered check.  Store this information in a couple of
arrays.  I have two such arrays, CheckSquares[] and DiscCheckSquares[].  The
entries in CheckSquares are bitfields with one bit for each piece type, and the
bit is set if a piece of the corresponding type would deliver a check on this
square.
The entries in DiscCheckSquares are all zero, except for the entries for squares
which contain a piece which can deliver a discovered check.  For these pieces,
the array entry contains the absolute value of the step direction from the piece
to the opponent's king.

With these arrays combined with your attack tables, it should be relatively easy
to write an efficient check generator.  Besides, the information you compute
is also very useful in the king safety eval.

Of course, you could also try to update the arrays incrementally instead of
computing them at every node.

Tord



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.