Author: Stefano Gemma
Date: 23:10:35 08/21/00
Go up one level in this thread
On August 21, 2000 at 20:22:08, Larry Griffiths wrote:
[...]
>I keep a list of black pieces and a list of white pieces. When a ply has to
>generate moves for the pieces, it loops thru the piece list. I guess this was
>the quickest way to generate moves without scanning thru the entire boards
>squares looking for black pieces.
I do the same in Drago and Raffaela. The board contains pointers to pieces while
the array of pieces contains pointers to board. The programs are in assembly. I
have recently implemented a C++ version, just to test faster the new genethical
algorithm i wish to use. The move generation seems to be up to ten time faster
in assembly (but ten time harder to debug) than C++.
>for(int i=0;i<blackpiecelist->Count;i++)
> {
> if(!blackpiecelist[i]->State&psCAPTURED)
> { // The piece is not captured (or promoted)
> blackpiecelist[i]->GenerateCaptures;
> }
> }
>When a piece is captured or a pawn is promoted, then its state is set to
>CAPTURED. (probably should have used MIA or something instead of CAPTURED :)
[...]
I just put NULL in the piece pointer to chessboard, to set captured state. When
i store a move, i'll store even the chessboard pointer to destination square. I
use this value to restore original captured piece position (should be checked
for en-passant) when i unmake that move.
Ciao!!!
PS:to see the assembly sources of my move generator, you can go to
www.linformatica.com (section chess).
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.