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