Wie kann man Graphic2D Objekte zwischenspeichern?

javaisland

Grünschnabel
Hallo,
ich bin gerade dabei ein Spiel in Java zu schreiben (vielmehr werde ich dazu genötigt :D ) und stehe vor dem Problem, dass es ein Spielfeld aus ca. 1400 Blöcken (aus Grafiken) erstellt in denen sich die Speilfigur bewegen kann. Jetzt will ich aber nicht, dass bei jedem Bewegen der Spielfigur das komplette Spielfeld neu aufgebaut wird. Daher war meine Idee das Spielfeld einmal zu Beginn zu erstellen und dann dann entsprechnd zwischenzuspeichern und bei einer Veränderung als Grundlage zu nehmen und dann den Spieler sowie Gegner neu zu platzieren. Leider habe ich aktuell noch keine Möglichkeit gefunden, wie man das machen kann.
Ich hoffe, dass ihr mir weiterhelfen könnt.

mfg
 
Eine Möglichkeit die mir spontan einfallen würde, wäre alle Blöcke zusammen zu nehmen und für die Darstellung eine einzelne große Grafik zu erstellen. Von dieser kann dann jedes mal einfach der nötige Ausschnitt gezeigt werden.
Sollte sich nun was an den einzelnen Blöcken ändern müsste man zwar die Grafik neu erstellen, aber das sollte nicht solang dauern als immerzu alle 1400 Blöcke einzeln zu zeichnen.
Für die Bestimmung der Positionen kann dann immer noch die einzelnen Blöcke hernehmen
 
Hey...
danke für eine Antwort. Leider funktioniert das mit dem Speichern in eine Datei nicht wirklich, da die Daten erst zur Laufzeit aus einer anpassbaren Datei erstellt werden.

Ich suche eigentlich eher eine Methode die einmal die Blöcke erstellt. Dann sind diese ja in der entsprechenden Graphics2D Objekt abgelegt. Und den Inhalt der in diesem Objekt steht würde ich gern zwischenspeichern, also am besten in ein anderes Objekt. Ich würde eigentlich gern das Klonen per Serialisierung umgehen wollen. (sofern Graphics2D überhaupt serialisierbar ist). Und bei Neuaufbau des Bildes würde ich dann auf das zwischengespeicherte Objekt zugreifen, es wieder in mein vorhandenes Zeichen-Objekt einladen und die dynamischen Komponenten hinzufügen. Also die Stategie ist schon da... nur leider habe ich keine Idee, wie ich diesen Weg mit dem Zwischenspeichern machen kann. Und das speichern in eine Datei und dann wieder auslesen scheint mir relativ zeitintensiv zu sein.

mfg
 
Ich würde das Bild ja nicht wirklich speichern sondern auch in einem Objekt zwischenspeichern.

Zu beginn müssen alle Blöcke einfach einmal alle auf ein BufferedImage gezeichnet werden, welches dann zum Darstellen genutzt werden kann. Wenn sich nun etwas an den Blöcken, sofern sich überhaupt was ändern kann, muss das Image einfach neugezeichnet werden.

Dieser Ansatz sollte eigentlich um einiges schneller sein, außer die Blöcke ändern sich ständig, dann wäre warscheinlich das Zeichnen jedes Blockes schneller.
 
Zurück