Logo ICT-BZ

ChessBot

Ich habe ein Schach und einen Schachbot programmiert

Themenbereich

Softwareentwicklung

Lernende/r

Janis Huber

Lehrbetrieb

CSS Versicherung

Betreuer

Martina Ellenberger & Urs Nussbaumer

Projekt-Website

https://github.com/JanisHuber/oopChessBot

Aufgabenstellung

Das Ziel war es ein Schachspiel zu programmieren, welches gegen einen Bot gespielt werden kann. Der Bot sollte in der Lage sein, die besten Züge zu berechnen und zu spielen.

Ergebnisse

ChessResult

Erreicht wurde ein Schach das einwandfrei gespielt werden kann. Die Funktion "Castling" und "En passant" wurden nicht implementiert. Der Bot spielt im aktuellen Zustand noch nicht optimal und ist noch nicht korrekt implementiert.

Lösungskonzept

Ich habe mit JavaFX ein GUI entwickelt, welches das Schachbrett und die Figuren darstellt. Beim klicken auf eine Figur werden die möglichen Züge berechnet und fälschliche Züge werden aussortiert. Das Schach behandelt Schach und Schachmatt korrekt und mit berechnnungen werden nur Lösungen angezeigt.

Aufgetretene Probleme

Die Überprüfung der Züge war sehr aufwendig und hat viel Zeit in Anspruch genommen. Daher war wenig Zeit vorhanden den Bot zu implementieren. Beim Bot war ausserdem das Problem das ich alle möglichen Zugzweige berechnen musste auf einem seperaten Schachbrett, da das Klonen von Schachbrettern mit Java nicht korrekt funktionierte, musste ich eigenständig eine Funktion schreiben die das Schachbrett kopiert, ohne das Referenzen auf das originale Schachbrett zeigen.

Ausblick

Das Bot muss noch optimiert werden und es muss eine effektive Lösung für das Bewerten der Züge gefunden werden. Da das pruning momentan falsche Zweige aussortiert. (pruning steht für das Abschneiden von unrelevanten Zweigen, es hilft die effizienz des Programms zu erhöhen, da es im Schach mit Tiefe 5, 35⁵ = 52'000'000 Züge durschnittlich gibt.)