Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Programming piece table

Author: Carsten Kossendey

Date: 16:34:27 04/17/98

Go up one level in this thread


On April 17, 1998 at 15:46:23, Dan Newman wrote:

>1) When a piece is captured (and removed from the piece list (figure
>list))
>   move the piece at the end of the list into the now empty location.
>   When undoing the capture just put the un-captured piece at the end of
>   the list.  You would of course maintain a count of the pieces in each
>   list to make it easy to find the ends of the lists and for iteration
>   through the lists.
>
>2) Use one of the bits in the piece to mark the piece as captured but do
>   not remove the piece from the list.  Use this bit to skip over this
>   piece when doing move generation, etc.  When undoing the capture,
>just
>   clear this bit.  (You could use the high order bit in the 'what'
>   member of the piece.)
>
>There are advantages and disadvantages to each of these.  With 1) the
>piece
>list grows shorter as the game progresses.  This helps with move
>generation
>in the endgame--it gets quite fast.  But the order of the pieces in the
>list becomes scrambled and thus the order in which moves are generated
>may
>suffer.
>
>In 2) (the one I currently use--mainly because of its simplicity) the
>order
>of the pieces is fixed.  This allows you to generate moves in order of
>piece type (which may help with move ordering).  The main disadvantage
>is
>that the length is always 16 so that move generation has some overhead
>(especially noticeable in the endgame).

You can improve this by rebuilding the list at the root position of your
search, such that it contains only as many elements as pieces are on the
board in the root position. (I assume you don't need the list while you
are not searching, otherwise you need another version of UndoMove()
which re-inserts a captured piece in case of a "take back" command.)

Also one thing you didn't mention is how you handle promotions. Do you
re-sort the list (since the piece type changes) or do you just leave the
promoted piece in the middle of the pawns?



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.