ERLEDIGT
JA
JA
ANTWORTEN
84
84
ZUGRIFFE
5541
5541
EMPFEHLEN
-
Und genau deshalb sollte es zwangsläufig mit einer Swing-GUI umgesetzt werden m.E.
ASCII auf Konsole ist übel, rein visuell gesprochen. Das Problem mit den Figuren entsteht gar nicht erst, wenn das Brett ein eigenes Objekt ist.
-
hey,
mir ist immer noch nicht so ganz klar warum man in der bewegungs-funktion einer figur angeben muss ob sie angreift?! ich meine wenn man auf ein feld zieht wo sich eine feindliche figur befindet dann wird sie geschlagen... oder nich?!
ahja und was man bei jedem zug auch noch überprüfen muss ist ob man damit seinen könig ins schach setzt, oder den feindlichen schach/matt setzt...?!
mfg daniel
-
Korrekt, aber es gibt noch einige weitere Legalitätsprüfungen.
-
Hallo,
mach doch die Figuren als eigene Klassen in die Board Klasse.
Mfg
chell
-
Halli und Hallo,
habe ich Euch richtig verstanden, ihr wollt eine weitere KI für ein Schachprogramm basteln?
Gibt es doch schon massenhaft. Ich hatte hier auch im Forum irgendwo schon vor monaten ein Projekt gelesen welches mittels Java solches vor hat.
Aslo ich habe von Schach KI nicht sonderlich viel Ahnung, habe aber in Java eine Web-Start-Applikation gebaut für ein Schach für 4 Personen. Es ist den Regeln des Quattro-Schachs nach empfundne mit einigen kleinen Änderungen, daher nenne ich es QSchach.
Da ich leider bisher noch niemanden begeistern konnte (und ich brauche ja dafür immhin 3 Leute) mit mir dieses Spiel, welches auch netzfähig ist zu spielen, wollte ich mal bei Euch anklopfen und fragen was Ihr haltet eigentlich davon eine KI für dieses QSchach zu entwickeln? Das wäre doch mal was ganz neues und daher Pionierarbeit.
Ich würde zu gerne Euch den Code für dat Spiel dann bereitstellen.
mit ganz neugierigen und gespannten Grüßen
Takidoso
-
Mal ne Frage was ist UCI-Schnittstelle und wie funktioniert sie und Winboard kenne ich auch nicht. Kläre mich mal bitte auf.
Zitat von Snape
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 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/pl...ubmit=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: 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
Ähnliche Themen
-
Schachprogramm, in dem man beide Spieler steuern kann?
Von Irgendjemand_1 im Forum SmalltalkAntworten: 6Letzter Beitrag: 08.02.07, 17:01





Zitieren
Login





