Author: Tom Kerrigan
Date: 20:14:58 07/07/98
Go up one level in this thread
Yes, this is probably what I will do. Anyway, a quick suggestion: what would happen if you separated your piece lists into piece lists and pawn lists? My guess is that you would save a lot of grief in a few places... Cheers, Tom On July 07, 1998 at 22:23:30, Paul Tillotson wrote: >Hello. > >In my program (which I'm am relatively new to chess programming) is >to 2 char[64] arrays and 2 char[16] arrays. Basically the board[64] array >has the current board status. The 2 char[16] arrays are a sorted list of >the pieces which point to the board[64] array. The other map[64] points to >the piece list. What this does is allows me to only have 16 iterations >to generate moves, eval, etc. The map structure allows me to locate where >the pieces is in the list if there is a capture, etc. > >A little example: >board[1] == N // board piece >map[1] == 6 // index to piece list >white_pieces[6] == 1 // index to board array > >A full circle. > >It may not be helpfull, but it seems to work well for me. >If this seems insane to anyone please suggest an alternative. > >Thanks, >Paul > >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; >> >>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.