Author: Tom Kerrigan
Date: 18:32:42 07/07/98
Go up one level in this thread
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; 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.01 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.