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.