5.2 XBoard-Protokoll (Blackbox)

Zweck/Verantwortlichkeit

Dieses Subsystem realisiert die Kommunikation mit einem Client (z.B. einer grafischen Oberfläche) mit Hilfe des textbasierten XBoard-Protokolls (vgl. Architekturentscheidung in Abschnitt 1). Das Subsystem liest Befehle über die Standardeingabe ein, prüft sie gegen die Spielregeln und setzt sie für die Engine um. Antworten der Engine (insbesondere ihre Züge) werden vom Subsystem als Ereignisse entgegengenommen, gemäß Protokoll formatiert und über die Standardausgabe zurückgesendet. Das Subsystem treibt somit das ganze Spielgeschehen. Es enthält auch die main-Methode.

Schnittstellen

Das Subsystem stellt seine Funktionalität über die Java-Klassen de.dokchess.xboard.XBoard und de.dokchess.xboard.Main bereit:
Bild: Klassen XBoard und Main
Bild: Klassen XBoard und Main
Tabelle: Methoden der Klasse XBoard
Methode
Kurzbeschreibung
setEingabe Setzt die Protokoll-Eingabe per Dependency Injection (siehe Abschnitt 8.1). Typischerweise ist das die Standardeingabe (stdin), automatische Tests z.B. verwenden eine andere Quelle.
setAusgabe Setzt die Protokoll-Ausgabe. Typischerweise ist das die Standardausgabe (stdout), automatische Tests verwenden eine andere Senke.
setSpielregeln Setzt eine Implementierung der Spielregeln (siehe Abschnitt 5.3 "Spielregeln (Blackbox)").
setEngine Setzt eine Implementierung der Engine (siehe Abschnitt 5.4 "Engine (Blackbox)").
spielen Startet die eigentliche Kommunikation (Eingabe/Verarbeitung/Ausgabe) in einer Endlosschleife, bis zum Beenden-Kommando.

Ablageort / Datei

Die Implementierung liegt unterhalb der Pakete de.dokchess.xboard...

Offene Punkte

Die Implementierung des Protokolls ist unvollständig. Sie reicht aber für die an DokChess gestellten Anforderungen aus. Insbesondere werden folgende Features nicht unterstützt:
  • Zeitkontrolle
  • Permanent Brain (denken, auch während der andere denkt)
  • Remis-Angebote und Aufgabe des Gegners
  • Schach-Varianten (alternative Regeln, z.B. Schach960)