Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Programming piece table

Author: Edward Screven

Date: 16:23:03 04/17/98

Go up one level in this thread


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

>Here are two tricks I've used for this.
>
>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).

have you considered compacting the move list at beginning of each
search?  this would make the move lists short in the endgame,
without requiring insert/remove per capture.

    - edward



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.