Author: Stuart Cracraft
Date: 11:19:53 10/16/04
Go up one level in this thread
On October 16, 2004 at 10:58:17, Ron Peterson wrote:
> I have seen some messeages about the use of bitboards for move generation.
>I use a offset approch for my move generator and I am pleased with the speed.
Where bitboard really shines is in evaluation. You can do a lot more
evaluation at better speeds of more complex board issues in less time
and with less thinking and cleaner code using bitboards than anything
else.
For a couple implementations, see GNU Chess and Crafty.
To avoid the complexity of implementing bitboard move generation but
get part of the benefits of bitboard evaluation, I maintain bitboard
long long's for piece location, update these during the makemove/unmakemove,
and then use them for evaluation.
I still my old attack routine and am happy with the hybrid.
The above refers to my personal program. The above two public programs
have considerably larger implementations for bitboard.
Stuart
>have enclosed a copy of my "gen_white_knight" code.
> My question is what type of speed increase wuold you expect to get in a
>move generator using bitboard? 50%? 100%?
> Thanks
>
>The following function accepts the next empty index for storage in an array of
>structures database. It returns the next empty spot after all knight moves have
>been calculated or -1 if the enemy king has been taken.
>
>gen_white_knight(int i,int j,int count,int ply)
>{
>
> int k,l,increment;
>
> for (increment=0; increment<16; increment+=2)
> {
> k = i + n_offset[increment]; /*static data table for offsets*/
> l = j + n_offset[increment + 1];
> switch (board[k][l])
> {
> case EMPTY:
> case BLACK_PAWN:
> case BLACK_KNIGHT:
> case BLACK_BISHOP:
> case BLACK_ROOK:
> case BLACK_QUEEN: store_move(i,j,k,l,0,count++,ply);
> break;
> case BLACK_KING: return -1;
> break;
> default: break;
> }
> }
> return count;
>}
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.