# Speicherun und Laden von Spielstände (minischach)



## Java-neuling (5. Januar 2005)

Ich habe hier eine recht schwere Aufgabe. Ich habe eine Minischach programm bei dem ich das Speichern und Laden der Spielstände (bzw. spielzügen) programmieren soll.

Leider blick ich durch das ganze Programm nur schwer durch, und habe auch keinerlei Ansatz für die Programmierung. 

Kann mir jemand erklären wie das geht oder wer lust hat, die paar programmzeilen zu schreiben. 

Das minischachprogramm könnt ihr unter diesem Link runterladen:

http://home.arcor.de/X1nyoung/minischach.java

Danke im vorraus


----------



## Winnetoupopper (5. Januar 2005)

Hi,

vielleicht hilft Dir dieser Link, n Ansatz zu finden.
Vor allem das Wort PGN 
http://wap.tutorials.de/t-175958.html 

gruß kev


----------



## Java-neuling (6. Januar 2005)

Jo cool danke. Werde ich mir heute abend wenn ich zeit habe alles durchlesen.


----------



## Java-neuling (6. Januar 2005)

Hmm aber konkretes steht dort nicht über das speichern und laden. Was Bedeutet denn SGF und PGN. 

Hat vieleicht jemand ein programiercod-beispiel für das speicherun und laden das ich für mein Minischachprogramm umschreiben könnten. Naja das wär das beste. Aber für weiter Hilfe bin ich sehr dankbar.


----------



## torsch2711 (7. Januar 2005)

Hallo, hab mir das ganze nur kurz angesehen, ein vorschlag wäre folgender:

Du hast das Schach feld als integer array aufgezogen, somit hast du die belegung der einzelnen figuren gespeichert, okay. Hast ws. (sorry bin es nicht komplett durchgegangen), jeder figur einen Integerwert gegeben. Mein vorschlag lautet wie folgt:

du könntest eine ASCII Datei erstellen, welche die werte in einer semikolonseparierten liste darstellt. Zusätzlich könntest du angaben wie Zugnummer, dauer etc. so speichern.

Dazu musst du nur die java.io.* api konsuldieren bzgl. der Fileoperationen konsuldieren (kannst natürlich auch eine Binarydatei statt ascii nehmen und alles in bytes umwandeln).

Du musst lediglich bei deiner aus und einlese prozedur die werte jeweils umkonvertieren in das gewünschte format.
Ich würde dir für den Anfang eine ASCII Datei empfehlen, um den Spielstand abzulegen.

Du kannst das brett auf 2 Arten in der Datei darstellen: 

1.)
Alle 8X8 Werte in einem 64 aufeinanderfolgenden Werte abbilden, welche alle mit semikolons getrennt sind.

2.) 
Alle 8X8 Werte wie ein schachbrett ablegen:
11;12;13;14;15;16;17;18
21;22;23;24;25;26;27;28 

etc.

wobei hier die erste zahl die Reihe und die zweite die spalte repräsentiert.
(dient nur zur verdeutlichung)

Beim einlesen der einzelnen zeilen solltest du die klasse stringtokenizer verwenden um das ganze wieder aufzudröseln.

Für weitere Fragen stehe ich gerne zur verfügung.

Natürlich könntest du auch über SerializedObjects und deren Abspeicherung gehen um die integermatrix abzulegen, was aber etwas überdimensioniert wäre, da du hier nix serialisieren musst.



Grüsse

Torsten


----------



## Java-neuling (7. Januar 2005)

Phuuu danke erstmal. Muss mich erstmal durch das durcharbeiten was du da geschrieben hast, das schachprogramm habe ich leider nicht selbst geschrieben,wenn ich sowas könnte, würde ich hier nicht solche fragen stellen .

Achja das schachbrett besteht nur aus 3x3 Feldern.

Cya


----------



## torsch2711 (7. Januar 2005)

hehe, hab ich mir fast gedacht, da das schachprogramm nämlich BufferedReader verwendet und von denen kommt man schnell auf das obengesagte.
Ansonsten hier ist vielleicht noch ein interessantes Java Tutorial zum Thema File-Access:

http://java.sun.com/docs/books/tutorial/essential/io/filestreams.html

Viel Spass dabei!


----------



## Java-neuling (10. Januar 2005)

Hmm der Programm code sieht ganz gut aus. Bekomme ihn aber nich in mein programm angebunden. Habe Folgende Zeilen am ende reingeschrieben:

	File inputFile = new File("farrago.txt");
	File outputFile = new File("outagain.txt");

        FileReader in = new FileReader(inputFile);
        FileWriter out = new FileWriter(outputFile);
        int c;

        while ((c = in.read()) != -1)
           out.write(c);

        in.close();
        out.close();
    }
}

Ich bekomme aber ne Fehlermeldung bei "FileReader in = new FileReader(inputFile);"

Was mach ich falsch vieleicht ist das auch voll dumm von mir,nun aber jeder anfang ist schwer :-/ 
kann mir jemand weiterhelfen?
Dankeschön.


----------

