Author: James Swafford
Date: 12:44:47 11/30/04
Go up one level in this thread
On November 30, 2004 at 14:59:04, Dan Honeycutt wrote: >On November 30, 2004 at 13:42:39, Dann Corbit wrote: > >>On November 30, 2004 at 13:25:08, James Swafford wrote: >> >>>On November 30, 2004 at 12:51:38, Andrew N. Hunt wrote: >>> >>>>Hi! >>>> >>>>I've recently implemented bitboards (standard and rotated) and have a question >>>>about pre-computing moves which contain blocked squares. Let's say I have the >>>>occupied rank: >>>> >>>>bQ, wN, _, wR, _, bP, bN, _ >>>> >>>>and I want to find the valid moves for the white Rook. How do I handle modifying >>>>its bitboard rank: 11010110 to remove the blocked squares and only store the >>>>available squares: 01101100? (which I can then And with the white/black pieces >>>>to find valid Rook moves) >>>> >>>>Maybe I'm missing something obvious... :-? >>> >>>You need to precompute a two dimension array >>>Bitboard rank_moves[64][256]. The first index is the square >>>the rook is on. The second index is the state of the rank >>>(in this case 11010110 base 2). >>> >>>You'll need a similar array for files and diagonals >>>(one for the a1->h8 direction and one more for the h1->a8 >>>direction). >>> >>>Just build these arrays in your program initialization >>>by doing some looping. >> >>You can get by with 128 entries instead of 256 in most cases, because a piece >>never attacks or defends the square it is standing on. > >I use [64][128] by simply throwing away the h file. I could use [64][64] by >likewise throwing away the a file but it would cost me an extra add for my shift >(ie I'd have to shift by 8*(rank-1) + 1 instead of 8*(rank-1)). Getting rid of >the square the piece is on could, I guess, get you to [64][32] but looks like it >would also require some extra math. I don't think you could get to 32. What if the square you're on is in the A or H file? -- James > >Dan H.
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.