Leveleditor

MrDeathly

Mitglied
Hallo Leute :)
bin neu hier im Forum und will mich jetzt endlich mal schlau machen wie ich meinen leveleditor realisieren könnte ...
also meine eigentliche frage liegt nicht darin, wie ich des mit den klickevents und dem design blabla machen könnte sondern:
ich habs mir so überlegt wenn ich ein level dann gebaut hab wird es in ner txt datei gespeichert... diese wird dann eingelesen und aus diesem code dann an den genauen x und y koordinaten neue wand objekte etc. erstellt ... nur mein problem liegt jetz darin, dass ich nicht weiss wie ich sowas in meinen quelltext einbauen kann ... also wenn da jetzt 5 objekte drinnen stehen mit bestimmten koordinaten dass die dann auch von meinem programm erstellt und gemalt werden :( ich weiss dass es ne IOStream bibl. gibt aber damit kann man ja eigentlich nur txt. einlesen in nem string speichern und dann wieder speichern oder printen aber ned in den quelltext einbauen oder?
hoffe ihr könnt mir helfen :)

mfg Basti
 

Sanix

Top Contributor
Dann kannst entweder halt jede Linie parsen und dann das String Token mit einer Liste von Objekten vergleichen. Oder du speicherst gleich das ganze Objekt (wahrscheinlich eine Liste bei dir) mittel serialisierung ab und liest es so wieder ein.
 

MrDeathly

Mitglied
hmm versteh ich ned wie du das meinst :)
nochnie was von serialisierung gehört xD bin noch ein frischling ...
ich habs jetzt so gemacht dass ich einfach jede objekt dass ich brauche im konstruktor erstell ... aber die meisten machen es ja beispielsweise auch so dass die einen arraymachen und darin die leveldaten speicher :/ kann mir des wer erklären wie des geht ?
oder näher erklären wie ichs bei meiner methode machen könnte?
 

Steev

Bekanntes Mitglied
Hi,

serialisierung ist eigendlich eine Methode in Java ein Objekt zur Laufzeit abzuspeichern oder eben wieder zu laden. Also genau das was du brauchst.
Hier mal ein kleines, einfaches Beispiel zur Serialisierung in Java:
[Java]
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io_ObjectInputStream;
import java.io_ObjectOutputStream;
import java.io_OutputStream;
import java.io.Serializable;

public class SerializedTest {
public static void main(String[] args) throws Exception {
YourClass yourObject = new YourClass();
yourObject.yourValue1 = 111.222;
yourObject.yourValue2 = 333.444;

System.out.println("Before:" + yourObject.yourValue1 + ", " + yourObject.yourValue2);

File file = new File("yourFile.txt");

OutputStream os = new FileOutputStream(file);
ObjectOutputStream oos = new ObjectOutputStream(os);
oos.writeObject(yourObject);

InputStream is = new FileInputStream(file);
ObjectInputStream ois = new ObjectInputStream(is);

yourObject = (YourClass) ois.readObject();

System.out.println("After:" + yourObject.yourValue1 + ", " + yourObject.yourValue2);
}
}

class YourClass implements Serializable {
private static final long serialVersionUID = -7235058815237362499L; // Für die Serialisierung wird eine ID benötigt

transient double yourValue1 = 123.456; // dieser Wert wird nicht mit abgespeichert weil -> transient
double yourValue2 = 0; // dieser Wert wird abgespeichert
}
[/Java]

Wenn du noch Fragen hast, dann kannst du dich ja nochmal melden. ;-)

Gruß
Steev
 

Bleistift

Mitglied
Oder du überlegst dir welche Daten du speichern musst, um das Objekt darzustellen(bei einer Wand z.b. x- und y-Koordinaten der Endpunkte) und schreibst dann in eine Textdatei eine Zeile: wand(x1,y1,x2,y2)
Dann kann man die Datei Zeile für Zeile einlesen, eine Zeile zerlegen, mit den Daten ein Objekt erzeugen und das dann zu einer Liste hinzufügen.
mfg Bleistift
 

Steev

Bekanntes Mitglied
@Bleistift:
Das hat natürlich im Gegensatz zur Serialisierung den Vorteil, dass man bei Änderungen an den Objekten auch noch alte Maps, die vor der Änderung erzeugt wurden, laden kann. Bei der Serialisierung bekommt man dann ja in der Regel eine Exception.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D LevelEditor - Grundsatzfrage Spiele- und Multimedia-Programmierung 7

Ähnliche Java Themen

Neue Themen


Oben