Speichern un Laden mit Serializable

Apollo4

Mitglied
Hi,

ich bin dabei ein kleines Spiel zu programmieren, jetzt soll man den Spielstand auch speichern und laden können.

Der Aufbau ist nach MVC.

Welche Klasse muss ich jetzt speicher und wiederherstellen?

Hätte jetzt gesagt einfach das komplette Spiel als Objekt abspeichern und beim laden das Spielobjekt zu ersetzen.
Das funktioniert bei mir so nicht dann reagiert gar nichts mehr.

Also habe nur bei den Level- und die Model Klassen Serializable implementiert, da die auch alle Daten beinhalten. gespeichert und neu geladen. Aber irgendwie vermixt sich da der alte und neue Spielstand.

Ich habe z.B. eine Klasse Observ als Observerklasse, die alles enthält, was aktualisiert werden muss
Konstruktor:

Java:
public Observ extends Observable (Player player, Level level...){
this.player=player;
...}

Obwohl die Objekte ja nur weitergerecht werden von Model (Player extends Model) / Level werden diese nicht mit aktualisiert. :bahnhof:
 

Apollo4

Mitglied
Also die Klasse Observ ist z.B. komplett null, obwohl diese als Serializable implementiert wurde. Die Controller Klasse die das Observer Objekt hält habe ich gespeichert.
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException

Die dafür zuständige Klasse sieht so aus:


Java:
public class Save {

    private static String file = "./savegame";

    public static void serialize(Control obj) {
        try {
            FileOutputStream data = new FileOutputStream(file);
            ObjectOutputStream o = new ObjectOutputStream(data);

            o.writeObject(obj);
            
            o.close();
        } catch (IOException e) {
            System.err.println(e);
        }
    }

    public static void deserialize(Control obj) {
        try {
            FileInputStream data = new FileInputStream(file);
            ObjectInputStream o = new ObjectInputStream(data);
            
            obj= new Control((Control) o.readObject());
            o.close();
        } catch (IOException e) {
            System.err.println(e);
        } catch (ClassNotFoundException e) {
            System.err.println(e);
        }
    }

Warum speichert er die Observer Klasse nicht, oder warum müssen diese weitergeleiteten Objekte der Observer Klasse überhaput gespeichert werden. Diese werden doch schon von den Model Klassen gehalten?
 
N

nillehammer

Gast
Java:
obj= new Control((Control) o.readObject());
Du verwendest hier nach der Deserialisierung offensichtlich einen Copy-Konstruktor. Ist das Absicht? Warum? Vielleicht hast Du in dem Konstruktor vergessen, den Observer mit zu kopieren. Für "normales" Deserialisieren brauchst Du eigentlich keinen Copy-Konstruktor. Da reicht auch das:
Java:
Control control = (Control) o.readObject();
 

Apollo4

Mitglied
Den Copy Konstruktor habe ich schon extra erstellt, hat aber nichts genützt. Wenn ich
Java:
Control control = (Control) o.readObject();
setze ändert sich beim Laden nichts... deswegen dachte ich vielleicht muss man den kopieren.

Den einzigsten fortschritt konnte ich erzielen als ich Level mit dem Model Objekten separat gespeichert und geladen habe. Da wurde die alte zustand geladen, aber seltsamerweise haben sich die neuen und alten daten vermixxt. z.B. können Items als Gegner auf ein mal herumlaufen^^

Kann mir das nur erklären, da ich die Observer Klasse jetzt nicht mit gespeichert habe, aber da sind ja eig. nur die weitergereichten Objekte drin?

Frage mich auch warum ich nicht die komplette Klasse Control wieder laden kann.
Falls es eine Rolle spielt, die Control klasse hat ein thread Objekt, dieses habe ich transient gemacht, da threads nicht serialisiert werden können, wie ich gelesen habe. Diese thread Klasse enthält keine Daten, nur eine Methode die ein control objekt erhält.
 

Apollo4

Mitglied
Habe jetzt einfach alles refreshed und neu gespeichert, dann geht es.
Aber warum musste ich alle Objekte der Observer Klasse jetzt nochmal ersetzen?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Speichern von Daten mit Mysql Spiele- und Multimedia-Programmierung 4
J Fertigungstechnik.. PLS HALP.. Quellcode vom Text in java-Klasse speichern Spiele- und Multimedia-Programmierung 2
M Bilder effizient speichern/serialisieren Spiele- und Multimedia-Programmierung 10
Devil0s 2D Stadt Generator/2D Welt speichern OHNE Tiles Spiele- und Multimedia-Programmierung 5
N [SLICK] Rectangle in Array Speichern Spiele- und Multimedia-Programmierung 3
M MJPEG Stream aufnehmen (Speichern und von VirtualDub weiterverarbeiten lassen). Spiele- und Multimedia-Programmierung 2
B Daten speichern: Reflexion vs Serializable Spiele- und Multimedia-Programmierung 8
A PNG pixelweise/blockweise speichern? Spiele- und Multimedia-Programmierung 2
F Programm für Bildbearbeitung gesucht: Skalieren und Speichern Spiele- und Multimedia-Programmierung 6
Y Jede Aktion sofort speichern Spiele- und Multimedia-Programmierung 5
aze Java 3D : 3D Objekte speichern und später wieder einlesen Spiele- und Multimedia-Programmierung 9
H Speichern und Öffnen von einem Zeichenprogramm Spiele- und Multimedia-Programmierung 4
S benutzerdefiniertes Tileset in Datei speichern Spiele- und Multimedia-Programmierung 3
J Zeichnen in BufferedImage und dieses in Datei speichern Spiele- und Multimedia-Programmierung 2
M Jpanel Graphik speichern Spiele- und Multimedia-Programmierung 6
A Bilder(BMP) speichern Spiele- und Multimedia-Programmierung 2
H Jpeg Bildinformation in ein Char Array speichern? Spiele- und Multimedia-Programmierung 4
U JPG in größe ändern und speichern Spiele- und Multimedia-Programmierung 3
G highscore in *.dat speichern! Spiele- und Multimedia-Programmierung 8
H Bilder speichern 2 - Methode richten? Spiele- und Multimedia-Programmierung 2
H Bilder speichern Spiele- und Multimedia-Programmierung 3
S Inhalt von Canvas3D als jpg - File speichern Spiele- und Multimedia-Programmierung 2
K Java2d Bild als JPG oder so speichern Spiele- und Multimedia-Programmierung 10
Hatsi09 Libvlc laden Spiele- und Multimedia-Programmierung 0
E TMX - Dateien in Java laden Spiele- und Multimedia-Programmierung 1
R Fehler beim Laden eines 2D-Bildes Spiele- und Multimedia-Programmierung 3
D JAVA Basiertes Spiel aus dem Internet in eigenem Client laden Spiele- und Multimedia-Programmierung 1
D [JOGL] bibliothek aus jar laden Spiele- und Multimedia-Programmierung 3
D Minecraft Config in andere Class laden/Minecraft Plugin Spiele- und Multimedia-Programmierung 1
R LWJGL: Object Loader -> .obj, .c4d, ... laden Spiele- und Multimedia-Programmierung 3
J Images laden in static Methode Spiele- und Multimedia-Programmierung 8
J Java3D - Textur laden geht nicht Spiele- und Multimedia-Programmierung 9
A Welche chunks im vorraus laden? Spiele- und Multimedia-Programmierung 9
CookieSoft Slick Texture laden Fehler Spiele- und Multimedia-Programmierung 6
S Sounds abspielen, ohne sie jedesmal neu zu laden Spiele- und Multimedia-Programmierung 8
Gossi Probleme beim Laden der Images aus dem "Tutorial für Java-Spiele" Spiele- und Multimedia-Programmierung 4
D JOGL2 eigene mipmaps laden Spiele- und Multimedia-Programmierung 13
P .obj-Datei in Java3D laden: ParsingErrorException Spiele- und Multimedia-Programmierung 7
aze Problem beim Laden von Obj File Spiele- und Multimedia-Programmierung 3
N Jogl Probleme mit dem Buffer beim laden einer Textur Spiele- und Multimedia-Programmierung 2
B Teile eines Bildes laden - BitBlk und drawImage Spiele- und Multimedia-Programmierung 3
S Problem beim laden eines Bildes in einer Methode Spiele- und Multimedia-Programmierung 14
G Laden von 3D-Modellen Spiele- und Multimedia-Programmierung 3
S Image will nicht laden Spiele- und Multimedia-Programmierung 3
J Opengl Texture laden Null Pointer Exception Spiele- und Multimedia-Programmierung 6
H Bild von Webcam laden Spiele- und Multimedia-Programmierung 4
P Langsames laden der Maps, bitte testen Spiele- und Multimedia-Programmierung 14
M Directx Datei laden Spiele- und Multimedia-Programmierung 3
G Textur laden auf ein eingelesenes 3D Objekt Spiele- und Multimedia-Programmierung 4
G Bilddatei laden Spiele- und Multimedia-Programmierung 4
D TextureLoader - Textur von Url laden Spiele- und Multimedia-Programmierung 2
M Seltsames Flackern bei Laden von Grafiken Spiele- und Multimedia-Programmierung 4
F Texturen laden? Spiele- und Multimedia-Programmierung 3
M Laden von Texturen nicht möglich Spiele- und Multimedia-Programmierung 11
T 3D-Objekte Laden Spiele- und Multimedia-Programmierung 3

Ähnliche Java Themen

Neue Themen


Oben