BEREZUG.DOC accompanied the original Pascal include file. It
describes the public procedures and functions supplied by
BEREZUG.INC, including the evaluation routines, move generation,
search procedure, and main entry point. The historical German text is
reproduced first, followed by an English translation.
Original German documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
| DOKUMENTATION BereZug.Inc
-------------------------
Diese Include-Datei liefert die Prozedur "Berechne_Zug" nach den
dokumentierten Schnittstellen von den Protokollanten. Außerdem kann
auf die anderen Unterprozeduren zugegriffen werden. Diese sind
im Folgenden nochmals einzeln dokumentiert:
- PROCEDURE Materiell(Stellung:TSpielFeld;CFarbe:TFarbe;VAR Wert:Integer;
VAR Ende:Boolean);
Liefert eine materielle Stellungsbewertung für die jeweilige Farbe;
ist das Spiel beendet, so ist das "Ende"-Flag gesetzt und die
Bewertung ist 32768 bei Gewinn für "CFarbe" bzw. -32767 bei deren
Verlust. Es handelt sich hierbei um eine Differenzauszählung.
Aufruf dieser Prozedur mit der jeweils anderen Farbe liefert deshalb
ein negiertes Ergebnis gegenüber dem anderen.
- PROCEDURE Positionell(Stellung:TSpielFeld;CFarbe:TFarbe;VAR Wert:Integer);
Liefert eine positionelle Bewertung der Stellung nach den positionellen
Kriterien, die von uns vorher beschrieben wurden. Wie bei "Materiell"
handelt es sich um eine Differenzbildung. Dieser Teil ist entscheidend
für die Spielstärke verantwortlich und der Punkt, an dem noch am
meisten verbessert werden kann.
- FUNCTION Bewertung(Stellung:TStellung;CFarbe:TFarbe):Integer;
Liefert eine Gesamtbewertung (materiell+positionell) durch Aufruf der
o.g. Prozeduren.
- FUNCTION Gegner(Farbe:TFarbe):TFarbe;
Liefert uns die andere Spielfarbe. Wird von einigen der folgenden
Prozeduren und Funktionen benutzt.
- PROCEDURE Finde_Zuege(Stellung:TStellung;Farbe:TFarbe;
VAR Zuege:TZugFeld;VAR ZugZahl:Byte);
Liefert ein Feld, das alle möglichen Züge enthält (sorry, der Reim entstand
nur zufällig). Greift auf "Eingabe_richtig" zurück.
- PROCEDURE Zug_Suche(Stellung:TStellung;Farbe:TFarbe;VAR Zug:TZug;
VAR Wert:Integer;Level:TLevel;Start:Boolean);
Diese Prozedur ist das Herzstück der Prozedur "Berechne_Zug". Sie
enthält die eigentliche Heuristik und greift dabei auf die oben
beschriebenen Teile zurück. Sie greift dabei außerdem auf die
Prozedur "Zug_ausfuehren" zu, um die verschiedenen Möglichkeiten
durchzuspielen.
- PROCEDURE Berechne_Zug(Spielfeld:TStellung;VAR x,y:TKoord;
Spielerfarbe:TFarbe;Spielstaerke:TLevel);
Diese Prozedur ruft "Zug_Suche" auf und stellt die Schnittstelle zum
Hauptprogramm dar.
|
English translation
Documentation for BereZug.Inc
This include file provides the Berechne_Zug procedure according to
the interfaces specified by the project coordinators. The other
subordinate procedures can also be accessed. They are documented
individually below.
Materiell
1
2
| PROCEDURE Materiell(Stellung:TSpielFeld;CFarbe:TFarbe;VAR Wert:Integer;
VAR Ende:Boolean);
|
Returns a material evaluation of the position for the given color. If
the game is over, the Ende flag is set and the evaluation is 32768
when CFarbe wins, or -32767 when that color loses. This is a
differential count. Calling the procedure with the opposite color
therefore returns the negated result.
Positionell
1
| PROCEDURE Positionell(Stellung:TSpielFeld;CFarbe:TFarbe;VAR Wert:Integer);
|
Returns a positional evaluation of the position according to the
positional criteria described earlier by the authors. Like
Materiell, it computes a difference. This part is decisive for
playing strength and is where the most improvement can still be made.
Bewertung
1
| FUNCTION Bewertung(Stellung:TStellung;CFarbe:TFarbe):Integer;
|
Returns an overall evaluation—material plus positional—by calling the
procedures described above.
Gegner
1
| FUNCTION Gegner(Farbe:TFarbe):TFarbe;
|
Returns the opposing player color. It is used by several of the
following procedures and functions.
Finde_Zuege
1
2
| PROCEDURE Finde_Zuege(Stellung:TStellung;Farbe:TFarbe;
VAR Zuege:TZugFeld;VAR ZugZahl:Byte);
|
Returns an array containing all legal moves—the rhyme in the German
original was accidental. It calls Eingabe_richtig to determine
whether a move is valid.
Zug_Suche
1
2
| PROCEDURE Zug_Suche(Stellung:TStellung;Farbe:TFarbe;VAR Zug:TZug;
VAR Wert:Integer;Level:TLevel;Start:Boolean);
|
This procedure is the heart of Berechne_Zug. It contains the actual
heuristic and calls the parts described above. It also calls
Zug_ausfuehren to play through the different possibilities.
Berechne_Zug
1
2
| PROCEDURE Berechne_Zug(Spielfeld:TStellung;VAR x,y:TKoord;
Spielerfarbe:TFarbe;Spielstaerke:TLevel);
|
This procedure calls Zug_Suche and provides the interface to the
main program.