Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: piece list possibilities

Author: Robert Hyatt

Date: 20:23:51 07/07/98

Go up one level in this thread


On July 07, 1998 at 21:32:42, Tom Kerrigan wrote:

>Yes, the arrays you describe are mandatory if you don't want to spend most of
>your CPU time looping through the board. :)
>
>The problem that I was thinking of, more specifically, is removing an entry from
>the piece list.
>
>Let's say a piece is captured. How do you know which section of the piece list
>it belongs to? You need a block of code like this:
>
>if(color[move.to]==WHITE&&piece[move.to]!=PAWN)
>  remove the piece from the white piece list;
>if(color[move.to]==WHITE&&piece[move.to]==PAWN)
>  remove the piece from the white pawn list;
>

I didn't do this at all.. just piece_list[pboard[square]]=0;

the piece list (mine) was allowed to have interspersed null entries
which were skipped over.  But before a search started, the list was
always "compressed" to squeeze out missing things.

since pboard[square] points to the piece list entry for the piece on
square, the above line of code zaps the piece list entry...  I did it
not using pointers, since fortran 77 didn't have them.  so pboard[sq]
was a simple index to the piece list entry for that square...

>and so forth.
>
>Are there any elegant solutions to this problem?
>
>Cheers,
>Tom
>
>
>On July 07, 1998 at 19:55:12, Robert Hyatt wrote:
>
>>On July 07, 1998 at 19:23:39, Tom Kerrigan wrote:
>>
>>>I want to write a very small chess program and I'm considering possible methods
>>>to store a list of pieces.
>>>Practically every time a chess program loops through a piece list, it's only
>>>concerned with pieces or pawns of a particular color. Thus, I had this in mind:
>>>
>>>int piece_list[32];
>>>/* piece_list 0 to 7: white pieces
>>>   piece_list 8 to 15: white pawns
>>>   piece_list 16 to 23: black pieces
>>>   piece_list 24 to 31: black pawns
>>>*/
>>>int white_pieces;
>>>int white_pawns;
>>>int black_pieces;
>>>int black_pawns;
>>>
>>>I think this is reasonable until a piece needs to be removed. Then the computer
>>>needs to figure out which list the piece belongs to, and this sounds
>>>time-consuming.
>>>Any comments or suggestions?
>>>
>>>Cheers,
>>>Tom
>>
>>
>>we used this in Cray Blitz.  Since you have a board[x] array, use a
>>pboard[x] array... where if you access pboard[x] it gives you an index
>>into the piece list rather than the piece on that square.  Worked well
>>for us, although we did it for vector-processing reasons...



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.