Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: what classes all the serious C++ chess programs have?

Author: Volker Böhm

Date: 15:26:10 08/09/04

Go up one level in this thread


Hi Uri,

IceSpell has lot of classes for everything. It has a class for

Square
Piece
Board
Value
Direction
Position
Evaluation (one class for every piece)
Move-Generation (one class for every piece)
SearchStack (holding the local information)
Search
Time-Control
Move
MoveList
Killer
History
...
(I don´t remeber everything).

That had speed issues. Thats why Spike does not have those basic classes like
Square, Piece, Value, Direcion, Move, ...

Spike has got the following classes:

1. A "Const" Class holding only constants that do not need memory (no const
fields). Nearly every class is derived from the const class giving it the
opportunity to access all relevant constant values.

2. A "Const-Field-Class" holding basic lookup tables
3. A Move-Generator-Class (only one)
4. An Attack-Table Class
5. A Board-Class
6. An Evaluation-Class
7. An Incremental-Evaluation-Class
8. A Pawn-Hash Class
9. A Hash Class
10. A SEE Class
11. A simple SEE Lookup-From-Attack-Table class
12. A Search Class
13. A Ponder Class
14. An Interface Class (Supporting Winboard and UCI)
15. A Time-Control Class (Controls that time does not exceed limit, calculates
the "base" time and a maximal time for the current move. The base time is only
calculated by time settings and amount of moves done)
16. A Timefactor Class (Calculates the current time factor, the time-factor is
only dependant of game situation and search issues (pv-change, value-change,
...))

Maybe I forgot one or two. Some Classes are large, this is not good in a design
point of view. But for Chess speed is most relevant.

Greetings Volker




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.