Klassenkonzept Schachprogramm

Snape hat gesagt.:
Eine UCI-Schnittstelle wäre diesbezüglich ideal, sie ist neben Winboard derzeit die gängigste Schnittstelle und von Winboard aus gelangt man mit einem speziellen Adapter (gibt es als WB2UCI) zur UCI-Kompatibilität.

Mal ne Frage was ist UCI-Schnittstelle und wie funktioniert sie und Winboard kenne ich auch nicht. Kläre mich mal bitte auf.

mit bestem Dank

Takidoso
 
Winboard - für Linux: XBoard - ist sowohl GUI als auch eine Schnittstelle, wie fremde Engines in die GUI integriert werden können. Also wie sie ihre Züge übermitteln usw. UCI ist eine Erweiterung, aber nur Schnittstelle, ohne GUI.
Die UCI Spezifikationen kann man z.B. bei http://www.shredderchess.com herunterladen.
 
Bezüglich Spiele in XML speichern zu wollen, ich habe mal irgendwo gelesen dass es für Schachprogramme einen eigenen Standard zum speichern und austauschen von Partien gibt, xml wäre möglicherweise dann neben diesem Standard.

Also ich hatte es damals mit den Klassen grob folgendermaßen gelöst, wobei ich die Klassen etwas anders genannt habe als ich es hier kund tuhe:

Klasse BrettModel: Speichert die Positionen der Figuren und die geschlagenen Figuren, beinhaltet Zugprotokoll für die Historie. Da es ein 4'erSchach ist kann auch prinzipiell seine Größe (Anzahl der Felder) bei der Initialisierung modifizert werden.

Klasse BrettGui: zeigt das Spielbrett an, mit all seinen Figuren (ob geschlagene oder nicht) und reagiert auf Mouse-Input. Ist in der Lage das Brett auch zu drehen, da der Spieler meist seine Figuren unten haben möchte und nicht links, rechts oder oben.

Klasse ZugprotokollGui: zeigt das im Brettmodel vorhandene Zugprotokoll an, ist imgrunde nichts anderes als ein JTable.

Abstrakte Klasse Figur: kann Bildinformationen der Figur wieder geben, kann Auskunft über legalen Zug geben, und noch diverser anderer Kram, der aber erstmal nicht wichtig ist

Klasse Konig: abgeleitet von Figur

Klasse Dame: abgeleitet von Figur

Klasse Laufer: abgeleitet von Figur

Klasse Turm: abgeleitet von Figur

Klasse Springer: abgeleitet von Figur

abstrakte Klasse Bauer: abgeleitet von Figur, macht alles was so ein Bauer machen kann, ist aber bezüglich Zugrichtung zu spezifizieren.

BauerNord: abgeleitet von Bauer (wäre halt in einem normalen Schach der weiße Bauer)

BauerWest: abgeleitet von Bauer (für ein normales Schach nicht relevant)

BauerSüd: abgeleitet von Bauer (wäre im normalen Schach der schwarze Bauer)

BauerOst: abgeleitet von Bauer (für ein normales Schach nicht relevant)

Klasse Move: zum speichern in das Zugprotokoll und auch rückgängig machen von Zügen
kann unteranderem geschlagene Figur aufnehmen und Ob es sich um Rouchade handelt oder nicht (ist für QSchach notwendig, da der König unter gewissen Umständen auch mehr als ein Feld gehen darf), Bauerverwandlung (wichtig für ein Zugrückgängigmachen)

Es gab natürlich noch weitere Klassen, die mir gerade nicht einfallen. Aber ich denke das sind die wichtigsten.

Ich habe für die Zuglegalitätsprüfung bei Turm, Dame, König und Läufer ein bissle lineare Algebra verwendet. Da die Steigung der Züge auf dem Brett für die aufgezählten Figuren signifikant sind.

Takidoso
 
@takidoso
Ich sitze auch grad an einer Weblösung für 4er Schach in Teams (analog zu http://play.chessvariants.org/pbm/p...191-561&userid=insadi&wait=15&submit=Continue) auf php+mysql-Basis und wollte mir hier n paar Tipps holen. Prinzipiell zieht man da emailschach-mäßig halt rundenbasiert. Die simultane Variante ist auch angedacht, aber das kommt dann erst später (außerdem brauchen alle 4 Leute gleichzeitig erst mal ne Stunde Zeit dafür).
Spieler zu finden ist kein Problem. Zumindest für die emailschach-variante. Da hab ich ein paar bei der Hand. Wenn Du willst, können wir gern mal ein Match machen.

Momentan zerbreche ich mir noch über die Klassen den Kopf und hab in Ansätzen die Figurenklassen und die Boardklasse. Das Gesamtbild fehlt mir noch, aber es soll eh erst mal ne quick&dirty-lösung werden. Später kommen dann Spieler- und Spielverwaltung (analog zu: http://www.karopapier.de) und am Ende das ganz große Projekt "KI für 4er Schach".
 
Hallo,

ich finde den Thread sehr interessant...

hat jemand schon probiert mittels php das Klassenkonzept in Schach umsetzen?

Wäre toll...


Bin gerade dabei... und für Tipps dankbar.

Viele Grüße
 
Zurück