Java Applet: digitales Schachbrett

Status
Nicht offen für weitere Antworten.

SchachFritz

Aktives Mitglied
Guten Tag,

ich habe seit kurzem eine Seite über Schach erstellt. Es wäre jetzt nicht schlecht, wenn man auf der Seite mit Hilfe eines Applets gespeicherte Partien nachspielen könnte.
Ich habe mir das folgendermassen vorgestellt.
Die Partien befinden sich in einer MYSQL Datenbank auf dem Webserver. Diese Partien werden dann im Applet in einer übersichtlichen jtable angezeigt.

Danach kann der User eine Partie auswählen und dann diese Partie auf einem online brett nachspielen.
Da wo ich nun im Grunde probleme sehe, oder vielmehr nicht weiss wie dies zu realisieren ist, ist wie ich das mit dem online schachbrett machen soll.

Ich habe mir vorgestellt am Anfang erst mal Bilder von den Figuren zu benutzen. Aber ich weiss nicht wie ich die Figuren auf dem Brett bewegen soll. Ich müsste also jede einzelne Stellung speichern?? Doch wie kann ich dann die Partie in die DB eingeben.
Es muss nämlich immer einen Zusammenhang zwischen der Zugnotation und der eigentlichen stellung geben.
Des weiteren ist es nötig regelwidrige Züge und das schachgebot zu erkennen. Allerdings ist eine komplette KI nicht von nöten, da es ja nur um das Nachspielen der Partie geht. Es sollen ja nicht zwei user gegen einander spielen.

Nachdem das alles realisiert wurde, werde ich dann statt den Bildern, die Figuren selbst in Java zeichnen.
Kann mir jemand ein paar Tipps geben, wie ich sowas realisieren könnte ? Wie gesagt mein Hauptproblem liegt in der umsetzung des onlineschachbretts.
 

Wildcard

Top Contributor
Was genau meinst du mit 'nachspielen'?
Das Spiel ist ja schon beendet und ja eigentlich nur eine Aufzeichnung?
Grundsätzlich würd ich da so rangehen.
Jede Figur ein eigenes Objekt das sich selbst zeichnen kann (Bilder sind der richtige Weg, lässt sich viel besser handeln als das in Java mit geometr. Formen nachzubilden) und seine Position kennt.
Dann brauchst du ein Spielzug Objekt mit FigurObjekt/von/nach usw...
Eine Liste von Spielzug Objekten bildet dann eine Partie ab.
Des weiteren ist es nötig regelwidrige Züge und das schachgebot zu erkennen.
Wieso das? Die Party ist doch schon gespielt :bahnhof:
 

SchachFritz

Aktives Mitglied
Danke für deine Hilfe.

ja es handelt sich nur um das Nachspielen der Partie.
Ich weiss dass eine solche Sicherheitsfunktion eigentlich nicht nötig, aber es kann ja sein dass die Partie falsch eingegeben wurde. Es würde dann ziemlich dumm aussehen, wenn regelwidrige Züge im Internet dargestellt werden würde. Denn ich bin es nicht der andauernd diese Partien in die DB eingeben wird. Es handelt sich dabei also nur um eine Sicherheitsmassnahme. Natürlich muss dies für den Anfang nicht unbedingt sein.

Jedoch sollte das applet Schachgebote, patt und schachmatt erkennen. Da stellt sich mir dir Frage wie ich die position der Figuren mit der Notation verbinden soll.
Im Schach ist die Notation genauso wie beim schiffeversenken. d.h. z.b. e2-e4 : die Figure von e2 zieht auf e4.
Wir kann ich die denn nun realisieren ?
 

Wildcard

Top Contributor
Das musst du durchparsen.
RegEx bietet sich für so etwas an.
[EDIT]Wenn du aus dem Feld eine Hashmap machst (zB e11 => Key/FigurObjekt => value) sollte das mit der Positionierung flott erledigt sein [/edit]
Das Projekt wird dich allerdings ein paar Tage beschäfigen, sowas macht man nicht mal schnell 'an nem freien Nachmittag' :wink:
 

SchachFritz

Aktives Mitglied
Ja ok. Ich frage mich allerdings, ob es nicht auch möglich ist, dies ohne parsen zu machen. Wäre es nicht möglich die Züge mit Hilfe von XML zu speichern? Da die Partien ja sws nur für die Webseite gedacht sind.

Es wäre nämlich nicht schlecht, wenn mann die Partien auch in ein anderes Format speichern könnte. In der Schachwelt gibt es dafür eigens erschaffene Formate z.b. cbh und pgn.

Das professionellste wäre ein PGN format zu nehmen. Allerdings habe ich überhaupt keine Ahnung wie dieses Format aussieht.

Mit Hilfe von XML wäre es dann jedoch möglich diese Partien auch ausserhalb des applets anzeigen zu lassen. Ausserdem ist XML ja ein weltweit bekanntes Datenformat.
Ich würde dann ungefähr folgende Struktur verwenden :

Code:
<PARTIE>

    <WEISS > 
            <NAME> ... </NAME>
            <VEREIN>... </VEREIN>
            <ELO> ... </ELO>
    </WEISS>

   <SCHWARZ>
            <NAME> ... </NAME>
            <VEREIN>... </VEREIN>
            <ELO> ... </ELO>
   </SCHWARZ>

  <DATUM> ... </DATUM>

  <TURNIER> ... </TURNIER>

  <ZUEGE> 
        <WEISS> 
           <ZUG> </ZUG>
           <BEMERKUNG> Schach? Matt? Patt? </ BEMERKUNG>
        </WEISS>

        <SCHWARZ>
            <ZUG> </ZUG>
           <BEMERKUNG> Schach? Matt? Patt? </ BEMERKUNG>
        </SCHWARZ>

    </ZUEGE>

    <ZUEGE>
    ...    
    </ZUEGE>
    ...
    <RESULTAT> </RESULTAT>
</PARTIE>


Was haltet ihr davon ? Damit würde ich doch eine saubere Repräsentierung erreichen oder ? Ich glaube dies wird besser und globaler als es mit parsen zu versuchen.
Die Frage die sich mir nun stellt ist wie ich dies nun mit der Datenbank verbinde. Wahrscheinlich werde ich dann den Link zur entsprechenden XML Datei auf dem Server anfgeben.

Ein weiteres Problem das mich quält ist das eingeben der Partien. Wenn ich ein Format benutze, das in der Schachwelt nicht benutzt wird, so muss ich ein Programm schreiben mit dem man die Züge eingeben kann. Dies ist eigentlich mein hauptproblem. Denn wenn ich noch eine zweite Applikation schreiben muss, so wird das Projekt viel komplizierter.

Des weiteren ist es ja für ein Applet nicht erlaupt auf das dateisystem des clients zuzugreifen. Da mein Server keine Client-Server applikationen unterstützt (habe kein cgi-bin verzeichniss), muss ich es mit einem Applet versuchen.

Da bleibt eigentlich nur noch die Möglichkeit, dass man die Züge online eingeben muss, und das applet diese Partie dann in das richtige XML format setzt.
Allerdings wird dies viel komplizierter als das eigentliche Programm. Daher glaube ich nicht, dass sich diese Lösung lohnen würde.

Es muss also noch eine bessere Lösung geben. Wie kann ich es dem user einfach machen, auch weitere Partien auf den Server zu laden.
Die Mitglieder meines Vereins, die nicht wirklich Ahnung von Informatik haben, wollen natürlich auch Partien auf den Server setzen. Da ich nicht immer danach gefragt werden will, muss die Applikation automatisiert und sehr einfach zu bedienen sein.

Hat einer von euch ein paar Vorschläge ?
 

Wildcard

Top Contributor
XML ist zwar ne schöne Sache, aber was nützt dir das in deinem Fall?
Ich bin jetzt mal davon ausgegangen das in der DB die Partien in einer der gängen Schachnotationen gespeichert sind.
Um das in XML zu überführen musst du es natürlich auch erstmal Parsen. Dann hast du XML, das du zum verarbeiten
wieder parsen musst. Seh ich jetzt den Mehrwert nicht :bahnhof:
 

SchachFritz

Aktives Mitglied
Das Problem das ich bei der gängigen Schachnotation habe ist, dass es zu viele Parameter gibt.
Ich müsste schon auf die Computernotation z.B. e2e4 zurückgreifen. Allerdings habe ich dann kein Platz für weitere angaben.
wie z.B. Zugnummer, wer gewonnen hat, name der spieler usw.
das allles muss ja auch irgendwie in die Db eingegeben werden. Somit muss ein Format her, das für den User leicht einzuhalten ist.
Damit es für dir Mitglieder meines Vereins auch möglich ist diese Partien einzugeben. Da enstehen doch dann Probleme mit der Genauigkeit. Es müssen ja dann nämlich alle Abstände eingehalten werden. Des weiteren muss es auch übersichtlich und verständlich sein.
 

Wildcard

Top Contributor
Du kannst von niemandem verlangen irgendein Format das du dir ausgedacht hast abzutippen.
Wenn brauchst du IMHO ein Applet in dem man die Partie nachspielen kann und du daraus die Notation selbst erzeugst.
Spielernamen kann man ja vorher abfragen, und die Züge mitzählen.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Java Applet Verknüpfungsproblem Allgemeine Java-Themen 6
T Java Applet Berechtigungen Allgemeine Java-Themen 2
T 2D-Grafik Java Applet Rechtecke und Kreise Allgemeine Java-Themen 1
I Java Applet wird immer blockiert Allgemeine Java-Themen 3
S Java Applet wird dauerhaft blockiert Allgemeine Java-Themen 1
T Java applet args Allgemeine Java-Themen 5
S Java Applet Crash - Keine Exception Allgemeine Java-Themen 8
L Java Applet - ClassNotFound online, offline korrekt Allgemeine Java-Themen 13
Y Applet/Html - Wie Java-Methode aufrufen, die einen Parameter erwartet? Allgemeine Java-Themen 3
T Java Applet in IE 8+9 Allgemeine Java-Themen 4
P Applet java 1.7 in Website einbinden ? Allgemeine Java-Themen 7
U Wie kann mit einen Java Applet Dateien erstellen,verschieben und löschen? Allgemeine Java-Themen 9
D JAVA Applet MVC? Allgemeine Java-Themen 2
T Java Application zu Applet Allgemeine Java-Themen 4
G Input/Output java applet schreibrechte Allgemeine Java-Themen 8
G java applet und com-port Allgemeine Java-Themen 7
W Java Applet läuft langsam Allgemeine Java-Themen 2
J Applet zum .java-Dateien auslesen/erstellen Allgemeine Java-Themen 5
S Applet in Java NetBeans Allgemeine Java-Themen 3
H Applet java.lang.reflect.InvocationTargetException Allgemeine Java-Themen 9
N Java Applet im eingeschränkten Benutzeraccount Allgemeine Java-Themen 10
L Problem mit Hintergrund bei JAVA Applet Allgemeine Java-Themen 27
Developer_X Java Applet - Font aus datei laden Allgemeine Java-Themen 15
W Applet notinited nach Java Versionsupdate Allgemeine Java-Themen 12
B Java Applet unter Mac wird nicht angezeigt Allgemeine Java-Themen 6
G Java Applet für VPN Allgemeine Java-Themen 2
C Externe Bilder in Java-Applet blocken? Allgemeine Java-Themen 2
F Java Print mit Applet einbinden Allgemeine Java-Themen 2
J Seltsame Exception beim Java Applet einbinden in Html Allgemeine Java-Themen 2
T Java Applet PDF erstellen mit iText, Probleme mit Pfad Allgemeine Java-Themen 1
G weiteres Java Programm vom Applet aus starten? Allgemeine Java-Themen 9
M Java applet zusammen mit DHTML z-index Problem Allgemeine Java-Themen 2
P Java-Applet funktioniert nicht in HTML-Seite Allgemeine Java-Themen 3
H Java Applet Diagramm (Chart) Allgemeine Java-Themen 11
S Java Applet Gästebuch Allgemeine Java-Themen 1
G Java-Applet bzw. Browser schließen Allgemeine Java-Themen 3
T Java-Applet auf Doppelklick reagieren lassen Allgemeine Java-Themen 2
P Java Applet Allgemeine Java-Themen 6
H Applet - java.security.AccessControlException: access. Allgemeine Java-Themen 6
G java applet mit swing -> hundert prozent cpu auslastung Allgemeine Java-Themen 11
H Java/applet?/Xport/LED`s ansteuern Allgemeine Java-Themen 4
T Text aus Java-Applet kopieren. Allgemeine Java-Themen 14
G java! Problem mit Chat-Applet Allgemeine Java-Themen 3
J Java-Applet funktioniert nur als Administrator Allgemeine Java-Themen 6
S Java Applet im Browser laden Allgemeine Java-Themen 2
D Java Applet aus fertigem Programm Allgemeine Java-Themen 2
W Kleines Applet in Standard Java Applikation umwandeln Allgemeine Java-Themen 3
A Die Java-Version des Clients in einem Java-Applet ermitteln Allgemeine Java-Themen 2
R Java Applet in Java Programm wandeln Allgemeine Java-Themen 4
G Wenn JAVA Applet nicht geladen werden kann -> Flash Allgemeine Java-Themen 4
F IE-Applet vs. Java Web Start Allgemeine Java-Themen 5
OnDemand Java Deployment Vaadin Allgemeine Java-Themen 3
D Hat Java eine Library um JavaScript auszuwerten? Allgemeine Java-Themen 2
Zrebna Wieso sind eigentlich JUnit-Tests in src/test/java platziert - nur Konvention? Allgemeine Java-Themen 7
N LlaMA, KI, java-llama.cpp Allgemeine Java-Themen 39
V Java-Codierungsherausforderung: Navigieren durch die Macken der Datumsmanipulation Allgemeine Java-Themen 2
E Output Fehler (Java-Programm Kuchen) Allgemeine Java-Themen 11
M java: unexpected type Allgemeine Java-Themen 2
harrytut Java Input/Output Tests Junit Allgemeine Java-Themen 3
B Java Discord bot auf ein Root Server? Allgemeine Java-Themen 1
BetziTheRealOne Java PKIX path building failed as non Admin Allgemeine Java-Themen 15
D Linux, Java-Version wird nicht erkannt bzw. welche Einstellung fehlt noch? Allgemeine Java-Themen 19
KonradN Java 21 Release Allgemeine Java-Themen 5
V Umgang mit fehlenden Daten in einer Java-Datenanalyseanwendung Allgemeine Java-Themen 5
P Fehler: Hauptklasse Main konnte nicht gefunden oder geladen werden Ursache: java.lang.ClassNotFoundException: Main Allgemeine Java-Themen 24
K Java Anwendung machen Anleitung Allgemeine Java-Themen 5
G java.io.listFiles() Allgemeine Java-Themen 3
8u3631984 Frage zu Java Streams min / max Allgemeine Java-Themen 17
S Java Programm lässt sich vom USB-Stick starten, aber nicht von HDD Allgemeine Java-Themen 16
K Java-Projekt Allgemeine Java-Themen 11
K Java-Projekt Allgemeine Java-Themen 0
ruutaiokwu Welcher Browser unterstützt heutzutage noch Java Applets? Allgemeine Java-Themen 5
Jose05 Java-Klasse im extra cmd-Fenster ausführen Allgemeine Java-Themen 3
rode45e Java Threads Allgemeine Java-Themen 4
G java.io.listFiles() Allgemeine Java-Themen 2
N Java Dynamic Proxy Allgemeine Java-Themen 3
N Leichte Java Gegner Ki Allgemeine Java-Themen 10
A Java modul Problem Allgemeine Java-Themen 4
Thomasneuling Java Jar datei erstellen, von Projekt, dass auch Javafx Dateien, FXML Dateien und CSS Dateien, sowie Bilder enthält? Allgemeine Java-Themen 14
V Funktionale Schnittstelle in Java Allgemeine Java-Themen 3
OnDemand Java String in Hashmap als Key NULL Allgemeine Java-Themen 27
urmelausdemeis Exception in thread "main" java.lang.Error: Unresolved compilation problem: Allgemeine Java-Themen 7
berserkerdq2 Wenn ich bei Intelij javafx mit maven importieren will, muss ich das in die pom.xml reintun, aber warum noch in module-info.java? Allgemeine Java-Themen 3
KonradN Java 20 am 21. März Allgemeine Java-Themen 1
O Java Website Stock Bot Allgemeine Java-Themen 3
J Front-/Backend in Java Allgemeine Java-Themen 14
doopexxx JAVA Google Webcrawler Allgemeine Java-Themen 1
J JavaScript innerhalb eines Java Projekts ausführen Allgemeine Java-Themen 2
A Java Programm erstellen hilfe Allgemeine Java-Themen 10
G java.lang.NoClassDefFoundError: org/aspectj/lang/Signature Allgemeine Java-Themen 2
lalex1491 Java Aktienkurse nachfragen Allgemeine Java-Themen 4
J Class to link Java Allgemeine Java-Themen 4
V Wie funktioniert das Schlüsselwort "final" von Java? Allgemeine Java-Themen 19
mrStudent Inferenz JAVA Allgemeine Java-Themen 6
U URI Rechner (Java Script) Allgemeine Java-Themen 7
TheSkyRider Java Geburtsdatum Textfeld Allgemeine Java-Themen 7
mihe7 Java 19 JavaDocs: Browserintegration Allgemeine Java-Themen 0
Encera Gleichzeitiges Ausführen und verbinden von 2 Java-Klassen über die Eingabeaufforderung und Eclipse Allgemeine Java-Themen 21
H Java Rechner Programmierung der Mathematik Allgemeine Java-Themen 33
Lennox Schinkel Java Kara Auf einen Java Host laufen lassen Allgemeine Java-Themen 17

Ähnliche Java Themen

Neue Themen


Oben