Computer Chess Club Archives


Search

Terms

Messages

Subject: Programming piece table

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.