A Chess-Playing Program for the 9810A: Unterschied zwischen den Versionen
Georg (Diskussion | Beiträge) |
Georg (Diskussion | Beiträge) |
||
Zeile 62: | Zeile 62: | ||
== Beispielpartie == | == Beispielpartie == | ||
<br> | <br> | ||
Für Schwarz spielen in dieser Partie der [[Fidelity Chess Challenger]] und A Chess-Playing Program alle Züge identisch, auch den tragischen Fehler 6. ... Sf6 | Für Schwarz spielen in dieser Partie der [[Fidelity Chess Challenger]] und A Chess-Playing Program alle Züge identisch, auch den tragischen Fehler 6. ... Sf6. | ||
<br> | <br> | ||
Version vom 17. April 2020, 08:15 Uhr
Im Jahr 1974 veröffentlichte Alan Wray im Keyboard Magazin von Hewlett-Packard Vol. 6 No. 4 den Artikel "A Chess-Playing Program for the 9810A". Darin beschrieb er ein Programm für den HP 9810A, das Schach spielen konnte. Dieses Programm wurde im US Patent 4235442 von Ron Nelson als Hilfsmittel für die Programmierung der Bewertungsfunktion des Fidelity Chess Challengers (CC1) genannt und legte somit einen der Grundsteine für die Entwicklung von Schachcomputern.
Das Programm kann über erhaltene Geräte oder über Emulatoren des HP 9810A zum Laufen gebracht werden. Auch eine Implementierung in anderen Programmiersprachen ist sehr einfach möglich.
Über die Taste Load kann das zuvor abgespeicherte Programm geladen werden. Durch zweimaliges Drücken von Continue fragt der Computer nach der Startposition. Diese muss zuvor erstellt worden sein. Das Schachbrett wird über die Register 1-64 dargestellt, d.h. A1 = Register 1, A2 = Register 9 usw.
Die Figuren erhalten eine Codierung, wobei positive Zahlen für die Figuren des Computers, negative für jene des Spielers stehen.
4 2 3 5 6 3 2 4
1 1 1 1 1 1 1 1
...
-1-1-1-1-1-1-1-1
-4-2-3-5-6-3-2-4
Will der Spieler Schwarz spielen, so ist dies durch Vertauschen von Dame und König in der Grundstellung anzuzeigen. Erkennt der Computer folgende Grundstellung,
4 2 3 6 5 3 2 4
1 1 1 1 1 1 1 1
...
-1-1-1-1-1-1-1-1
-4-2-3-6-5-3-2-4
so wird das Register 1 als H8 interpretiert und der Computer eröffnet mit seinen weißen Steinen aus den Registern 49-64.
Lädt man die Position für "Spieler spielt weiß", zeigt die Anzeige:
Die Züge werden über die Register x und y eingegeben. Für 1. e4 ist folgende Eingabe erforderlich:
2 <Pfeiltaste nach oben> 5 (die y-Koordinate 2 wird in das Register y gespeichert, die x-Koordinate e=5 in das Register x)
Continue
4 Up 5 Continue.
Der Computer antwortet mit seinem Gegenzug 1. ... e5:
Continue
Aufbau des Programms
Jedem der 64 Felder, die über 64 Register des HP9810A interpretiert werden, wird nicht nur eine ganze Zahl zugewiesen, sondern eine Dezimalzahl der Gestalt A.BCDDDDEEEE.
Dabei steht A für die Figurenbezeichnung (siehe Graphik oben), B für die Anzahl der eigenen Figuren, die dieses Feld erreichen können, C für die Anzahl der gegnerischen Figuren, die dieses Feld erreichen können, DDDD für die Summe der Werte der eigenen Figuren, die das Feld erreichen können und EEEE für die Summe der Werte der gegnerischen Figuren, die das Feld erreichen können.
Zum Beispiel bedeutet Register 9 = -1.0100000500, dass auf A2 ein Bauer des Spielers steht, der von einer Figur des Spielers erreicht werden kann, deren Wert 500 beträgt (in der Grundstellung wäre das der Turm).
Die Werte der Figuren werden folgendermaßen definiert:
Bauer = 100
Springer = Läufer = 300
Turm = 500
Dame = 900
König = 1200
Der Algorithmus lässt sich wie folgt skizzieren:
Scanne das Brett nach Figuren.
Wenn eine eigene gefunden wurde, prüfe mögliche Züge.
Wenn ein möglicher Zug gefunden wurde, evaluiere die Position.
Durchsuche das Brett nochmals nach Figuren und prüfe, wo diese hinziehen können, nachdem der eigene Zug ausgeführt wurde.
Anhand obiger Tabelle und der Ermittlung, welche Figuren welche Felder erreichen, wird der Stellung nach dem Zug eine Bewertung zugewiesen, wobei über die Funktion N/[(4.5-x)^2+(4.5-y)^2] (N=Anzahl der Figuren, die das Feld erreichen, x und y = Koordinaten) die Felder zusätzlich unterschiedlich gewichtet werden. Die Funktion stellt sicher, dass Felder in der Mitte wertvoller sind. Der Zug mit der höchsten Bewertung wird gewählt. In gleichen Situationen spielt das Programm immer gleich, da kein Zufallsgenerator implementiert wurde. Die Rechentiefe ist immer nur 1 Halbzug.
Beispielpartie
Für Schwarz spielen in dieser Partie der Fidelity Chess Challenger und A Chess-Playing Program alle Züge identisch, auch den tragischen Fehler 6. ... Sf6.