Discuss Scratch
- Discussion Forums
- » Deutsch
- » Coder Dojo Linz: Schachprogrammierung
- Samueldora
-
Scratcher
100+ posts
Coder Dojo Linz: Schachprogrammierung
Das Coder Dojo Linz hat einen tollen Beitrag zur Schachpogrammierung in Scratch veröffentlicht.
Artikel zur Schachprogrammierung
Ein Basisprogramm dazu gibt es auch. In seiner ausprogrammierten Form ist das inzwischen ziemlich ausgereift und gehört zum Besten, was auf der Scratch-Plattform zum Thema Schach erhältlich ist.
Sehr lesenswert und vielleicht auch inspirierend für andere.
Samueldora
P.S.: Bonsai Chess ist übrigens nicht das Linzer Programm und basiert auch nicht darauf.
Artikel zur Schachprogrammierung
Ein Basisprogramm dazu gibt es auch. In seiner ausprogrammierten Form ist das inzwischen ziemlich ausgereift und gehört zum Besten, was auf der Scratch-Plattform zum Thema Schach erhältlich ist.
Sehr lesenswert und vielleicht auch inspirierend für andere.
Samueldora
P.S.: Bonsai Chess ist übrigens nicht das Linzer Programm und basiert auch nicht darauf.
Last edited by Samueldora (April 15, 2017 07:17:24)
- frodewin
-
Scratcher
500+ posts
Coder Dojo Linz: Schachprogrammierung
Coole Sache, danke für den Link! Ich wollte auch schon immer mal ein Schachprogramm für Scratch machen. Ich habe auch deine Chess Engine schon angespielt, konnte die Partie aber nicht zuende spielen.
Falls du oder andere Scratcher mehr zum Thema Schach machen wollen, würde ich vorschlagen ein Rahmenprojekt zu machen, welches die Darstellung und Überwachung der Regeln macht und die Einbindung von verschiedenen Engines ermöglicht. Damit können wir die verschiedenen Algorithmen gegeneinander testen oder auch eine veränderte eigene Version gegenüber der vorigen evaluieren. Das bringt uns bei der Algorithmenentwicklung glaube ich ziemlich gut weiter.
Als Beispiel für so ein Rahmenprojekt siehe PullJoshs Projekt zu seiner Ultimate Tic-Tac-Toe AI Competition.
Was hältst du davon?
Falls du oder andere Scratcher mehr zum Thema Schach machen wollen, würde ich vorschlagen ein Rahmenprojekt zu machen, welches die Darstellung und Überwachung der Regeln macht und die Einbindung von verschiedenen Engines ermöglicht. Damit können wir die verschiedenen Algorithmen gegeneinander testen oder auch eine veränderte eigene Version gegenüber der vorigen evaluieren. Das bringt uns bei der Algorithmenentwicklung glaube ich ziemlich gut weiter.
Als Beispiel für so ein Rahmenprojekt siehe PullJoshs Projekt zu seiner Ultimate Tic-Tac-Toe AI Competition.
Was hältst du davon?
- Samueldora
-
Scratcher
100+ posts
Coder Dojo Linz: Schachprogrammierung
Das Tic-Tac-Toe Rahmenprojekt von PullJosh sieht interessant aus, muss ich mir mal ansehen.
So ein Rahmenprojekt ist wahrscheinlich beim Schach deutlich schwieriger. Im Profi-Bereich gibt es definierte Protokolle, mit denen man Programme gegeneinander spielen lassen kann. Hier auf Scratch sind die meisten Programme noch nicht einmal völlig regelkonform.
Aber Archimedes496 hat vor knapp zwei Jahren schon mal so einen Wettbewerb initiiert:
Studio zum AI-Wettbewerb
Einführungspräsentation als Projekt
Archimedes' eigenes Schachprojekt
Damals kam wenig bis keine Resonanz, ich hatte selbst auch überhaupt keine Zeit dafür. Inzwischen scheint Archimedes496 inaktiv zu sein, zumindest zeitweise. Aber die Linzer scheinen da mehr zu machen, es gibt einige Remixe vom Basisprojekt. Ich bin gespannt, was passiert.
So ein Rahmenprojekt ist wahrscheinlich beim Schach deutlich schwieriger. Im Profi-Bereich gibt es definierte Protokolle, mit denen man Programme gegeneinander spielen lassen kann. Hier auf Scratch sind die meisten Programme noch nicht einmal völlig regelkonform.
Aber Archimedes496 hat vor knapp zwei Jahren schon mal so einen Wettbewerb initiiert:
Studio zum AI-Wettbewerb
Einführungspräsentation als Projekt
Archimedes' eigenes Schachprojekt
Damals kam wenig bis keine Resonanz, ich hatte selbst auch überhaupt keine Zeit dafür. Inzwischen scheint Archimedes496 inaktiv zu sein, zumindest zeitweise. Aber die Linzer scheinen da mehr zu machen, es gibt einige Remixe vom Basisprojekt. Ich bin gespannt, was passiert.
- Samueldora
-
Scratcher
100+ posts
Coder Dojo Linz: Schachprogrammierung
Gestern habe ich mal ein kleines Vergleichsturnier zwischen den momentan auf Scratch vorhandenen Schachprogrammen ausgetragen. Die PGN-Protokolle dazu stehen in den Kommentaren zu Archimedes' Studio (s.o.).
Dazu läuft eine Diskussion im englischsprachigen Forum.
Ich denke, dass es noch Luft nach oben bei den Schachprogrammen auf Scratch gibt. Im Moment kämpfen alle noch damit, vier Halbzüge fehlerfrei darzustellen, mehr scheint bei nicht-selektiven Alpha-Beta-Algorithmen in akzeptabler Antwortzeit kaum machbar zu sein. Gute Selektivität mit Schachwissen wäre die nächste Stufe er Erleuchtung.
Dazu läuft eine Diskussion im englischsprachigen Forum.
Ich denke, dass es noch Luft nach oben bei den Schachprogrammen auf Scratch gibt. Im Moment kämpfen alle noch damit, vier Halbzüge fehlerfrei darzustellen, mehr scheint bei nicht-selektiven Alpha-Beta-Algorithmen in akzeptabler Antwortzeit kaum machbar zu sein. Gute Selektivität mit Schachwissen wäre die nächste Stufe er Erleuchtung.
Last edited by Samueldora (April 15, 2017 07:15:52)
- frodewin
-
Scratcher
500+ posts
Coder Dojo Linz: Schachprogrammierung
Das Tic-Tac-Toe Rahmenprojekt von PullJosh sieht interessant aus, muss ich mir mal ansehen.
So ein Rahmenprojekt ist wahrscheinlich beim Schach deutlich schwieriger. Im Profi-Bereich gibt es definierte Protokolle, mit denen man Programme gegeneinander spielen lassen kann. Hier auf Scratch sind die meisten Programme noch nicht einmal völlig regelkonform.
Wäre glaube ich nicht gar so schwer, denn man bräuchte nur eine grafische Darstellung und einen Test ob ein zurückgelieferter Zug erlaubt ist.
Das meiste davon ist schon gelöst:
- die grafische Darstellung kann man von einem bestehenden Scratch-Projekt remixen
- einen Zuggenerator findet man sicherlich auch (der müsste aber vollständig sein, d.h. der darf auch Rochaden, en-passants und Umwandlungen nicht vergessen
- der Test ob ein Zug erlaubt ist ist dann einfach ein Block:
<[legal Moves v] enthält [proposed move] ?>
Der Rest des Aufwands liegt bei den Engines, die müssten jeweils umgeschrieben werden so dass sie den Zug im vorgegebenen Format liefern. Wenn eine Engines gewisse Dinge nicht berücksichtigt, zum Beispiel en-passant nicht kann macht das nichts, die Engine darf sich dann nur nicht wundern wenn der Gegenspieler unerwartete Züge macht.
Ich kann gerne so ein Rahmenprogramm entwickeln, wenn sich mindestens zwei Engine-Coder bereit erklären, den Entwurf zu kommentieren und später ihre Engine dafür anzupassen. (Sonst wird es ein Projekt das keiner verwendet, davon hab ich schon zuviele :-)
- Samueldora
-
Scratcher
100+ posts
Coder Dojo Linz: Schachprogrammierung
Wäre glaube ich nicht gar so schwer, denn man bräuchte nur eine grafische Darstellung und einen Test ob ein zurückgelieferter Zug erlaubt ist.
Das meiste davon ist schon gelöst:
- die grafische Darstellung kann man von einem bestehenden Scratch-Projekt remixen
- einen Zuggenerator findet man sicherlich auch (der müsste aber vollständig sein, d.h. der darf auch Rochaden, en-passants und Umwandlungen nicht vergessen
- der Test ob ein Zug erlaubt ist ist dann einfach ein Block:
<[legal Moves v] enthält [proposed move] ?>
(…)
Ich kann gerne so ein Rahmenprogramm entwickeln, wenn sich mindestens zwei Engine-Coder bereit erklären, den Entwurf zu kommentieren und später ihre Engine dafür anzupassen.
Klingt gut und interessant. Ich wäre dabei. Ich verstehe es so, dass der Zuggenerator nur zur Legalitätsprüfung verwendet wird und die Programme ihren Zuggenerator behalten. Mein Zuggenerator z. B. ist ohne den Suchbaumgenerator unvollständig. Der Zuggenerator erzeugt pseudolegale Züge, die das Bewegungsmuster abbilden, aber z. B. nicht auf Matt prüfen oder darauf, ob man seinen König ins Schach gestellt hat. Das passiert erst hinterher.
Eine vollständige Abbildung dessen, was man braucht, bietet das FEN-Format. Da ist der Rochadestatus dabei, ggf. ein en-passant-Zielfeld und die Zahl der Halbzüge seit dem letzten irreversiblen Zug (für Prüfung auf Zugwiederholung und 50-Züge-Regel). Leider unterscheidet FEN Groß- und Kleinschreibung, was sich bekanntlich in Scratch nicht so gut macht.
Wie auch immer, so eine AI-Arena wäre spannend.
- Discussion Forums
- » Deutsch
-
» Coder Dojo Linz: Schachprogrammierung

