schachprogrammierung

Der Autor entwickelte Programme in C++, Java und für Android, die in der Lage sind, Schach zu spielen.

 

C++: Das Programm beherrscht die Regeln des Schach-

spiels, inklusive der Sonderzüge Rochade, En passant

und Bauernumwandlung auf der letzten Reihe.

 

Das Programm besitzt ein GUI mit Menusteuerung.

Die Bewegung der Spielfiguren auf dem Schachbrett

erfolgt über Mausklick, jeweils auf die Ausgangs- und

die Zielposition. Dabei können nur eigene Figuren

bewegt werden und es können nur zulässige, legale

Züge ausgeführt werden.

 

Die Anzeige der bisherigen Spielzüge, der erfassten

Namender Spieler und der je Spieler verbrauchten Zeit

erfolgt neben dem Schachbrett.

 

 

Die Erfassung der Partiedaten (Spielernamen, Ort, Zeit usw.) erfolgt über ein Dialogfenster, das über das Menu des Hauptfensters geöffnet wird.

 

Die gespielten Partien inkl. der erfassten Partiedaten können in einer MySQL-Datenbank gespeichert werden. Hierzu wird im Hauptfenster der entsprechende Menupunkt gewählt.

 

Diese dann in der Datenbank gespeicherten Partien können in einer Tabelle angezeigt werden. Die Tabelle bietet eine Auswahlmöglichkeit zur Übernahme der entsprechenden Partie ins Programm.

 

 

 

Diese aus der Datenbank ins Programm importierten Schachpartien können dann Zug für Zug nachgespielt werden. Dafür ist ein Button “Nächster Zug“ neben

dem Schachbrett vorgesehen. Die entsprechenden ausgeführten Spielzüge werden dabei in der Textbox

markiert. Auch ein Weiterspielen unterbrochener

Partien ist möglich.

 

 

Wie funktioniert das Programm grundsätzlich?

 

 

Die Bewertung der möglichen Spielzüge durch das Programm, und die Auswahl eines Spielzuges davon, geschieht grundsätzlich nach folgenden Kriterien:

  1. Steht man im Schach oder gerät man durch einen möglichen Zug ins Schach?

  2. Kann man eine gegnerische Figur schlagen oder im nächsten Zug bedrohen?

  3. Wie hoch ist die Mobilität, d.h., wie viele Felder können nach einem Spielzug durch diese Spielfigur erreicht werden?

  4. Wird nach dem eigenen Zug eine eigene Figur durch den Gegner bedroht?

 

 

Das Schachprogramm geht dabei wie folgt vor:

  1. Es werden alle legalen Züge ermittelt und in eine Liste der möglichen Züge eingetragen.

  2. Für diese Züge werden alle möglichen gegnerischen Züge berechnet und dabei wird überprüft,

    a) ob man dabei ins Schach gerät,

    b) ob dieses Feld sicher ist (vom Gegner nicht bedroht), oder

    c) ob eine eigene höherwertige Figur in Folge dieses Spielzuges bedroht wird.

    Gerät man dabei ins Schach, wird der entsprechende Zug aus der Liste gestrichen, ebenso, wenn das Zielfeld bedroht wird. Wird eine andere eigene Figur durch diesen Spielzug einer Bedrohung ausgesetzt, so verringert sich die Bewertung dieses Spielzuges.

  3. Es wird ermittelt, ob man eine gegnerische Figur schlagen kann, was die Bewertung dieses Spielzuges erhöht.

  4. Außerdem erfolgt eine Tiefensuche für den darauffolgenden Zug, in dem geprüft wird, ob man Schach geben kann. Dies erhöht die Bewertung dieses Spielzuges.

  5. Diese Tiefensuche ermöglicht auch die Feststellung, ob man im Folgezug (unabhängig vom konkreten Zug des Gegners) möglicherweise eine gegnerische Figur bedrohen könnte. Auch dies erhöht die Bewertung dieses Spielzuges.

  6. Diese Tiefensuche ist auch wesentlich für die Berechnung der Mobilität, also wie viele Felder die eigene Figur eines Spielzuges im nächsten Zug erreichen könnte. Auch die Mobilität beeinflusst die Bewertung eines Spielzuges positiv.

  7. Der Spielzug mit der insgesamt höchsten Bewertung wird ausgewählt. Bei mehreren Spielzügen mit gleicher Bewertung (kommt praktisch nur in der Eröffnung vor), erfolgt aus dieser Liste eine Zufallsauswahl.

Ein Minimax-Algorithmus zur Tiefensuche ist bislang noch nicht implementiert, ist aber in Arbeit.

 

Die Klassen des Programmes

Download des Programmes folgt ...

Java/Android-Version

 

Die Java-Desktop-Version und die darauf aufbauende Android-Version sind grundsätzlich gleich aufgebaut, außer sprachspezifischen Besonderheiten.

Details folgen, ebenso der Download.