Author: Inmann Werner
Date: 04:30:51 04/17/98
Piece table question
Can anybody help me?
When generating moves in my chess programm, until now I search the whole
boad for pieces. I want to speed this up and use a figure list like
this:
Typedef struct{
Char where /*Position on Table*/
Char what /*which piece (0=nothing;1=pawn ...*/
}TYPFIGLI;
TYPFIGLI FIGLI[2][16]; (FIGLI[0].. is white, FIGLI[1].. is black)
Char FIGBR[125(A board table with a 'pointer' to FIGLI (10*12 board))
In the move Generator and the evaluation function, everything works
fine.
In the routine 'DO_MOVE' it is a little bit tricky, but it works.
FIGLI[color][FIGBR[from]].where=tomove
FIGBR[tomove]=FIGBR[from]
FIGBR[from]=-1
But in the routine 'UNDO_MOVE' i have a problem, when I put back a
captured piece.
There are two possibilities.
1) search the structure FIGLI for an empty field and use it.
2) Increase the number of pieces in FIGLI and store the piece in the
last one
If I use 1), I possibly have to search up to 16 times to find an emty
location.
If I use 2), I have to increase the structure of FIGLI and more and more
'pieces' are in it. In 'Generate moves' everything slows down. (maybe I
get even an overflow).
Which possibility is better?(I think the first one)
Does anybody know anything much better and faster!!!.
Thank you very much,
INMANN WERNER
PS: I am from Germany, and my English is rather poor. Excuse me!!
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.