Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Faule Socke

Community-Fossil

  • »Faule Socke« ist der Autor dieses Themas

Beiträge: 1 915

Wohnort: Schreibtischstuhl

  • Private Nachricht senden

1

11.10.2008, 21:53

Laufzeitdaten speichern (Spielstände)

Hi,

ich bin grade mal wieder am Programmieren und nun stellt sich mir die Frage, wie ich das Spielstandsystem implementieren soll. Folgendes Konzept:
:arrow: Alle Daten (Schiffe, Waffen etc...) liegen auf dem Heap und werden durch eine Managerklasse verwaltet (ptr listen)
:arrow: Typen und Spielinstanzen werden getrennt verwaltet (Ein Schiffstyp speicher allgemeine infos wie z.b. max. geschwindigkeit, trägheit etc...)
:arrow: Die "Spielinstanzen" also die Schiffsklasse z.b. speichern wiederum andere informationen, wie z.b. die aktuelle position im raum oder die aktuelle geschwindigkeit.
:arrow: Damit eine "Spielinstanz" (mir ist noch kein gescheiter begriff dafür eingefallen) auch weiss, was ihr typ ist, wird dieser ebenfalls auf dem Heap verwaltet und die Klasse erhält einen Zeiger darauf
:arrow: Alle typen werden in XML Dateien gespeichert und können daraus geladen werden

Nun ist es kein Problem, die typen in xml dateien zu speichern, es wäre auch kein Problem, die einzelnen "Spielinstanzen" in xml dateien zu speichern und wieder zu laden, aber für mich stellt es ein problem dar, wie ich die verbindungen, also meinetwegen den Zeiger von der Schiffs-"Spielinstanz" auf den Schiffstyp speichern kann. Hat jemand konzeptvorschläge?

mfg,

Hoffnungsvolle Socke

Chase

Alter Hase

Beiträge: 753

Wohnort: Nagaoka / Darmstadt / Düsseldorf

Beruf: fauler Studi

  • Private Nachricht senden

2

11.10.2008, 22:19

Hhm, einfach deine XML-Objekte um ein "id"-Attribut erweitern welches ein eindeutiger Name ist. Beim Speichern kannst du dann ja durchzaehlen "ship000", "ship001",.. Beim Laden erst alle Objekte anlegen, aber so, dass du per ID als Schluessel darauf zugreifen kannst (map<string,Ship*> oder sowas). Danach kannst du alle Referenzen setzen.

Zugegeben, wenig elegant.. kommen sicher bessere ideen
"Have you tried turning it off and on again?"

Fred

Supermoderator

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

3

11.10.2008, 23:34

Ich würde neben der ID einen String setzen, der den Typ des Objekts definiert. Dann kannst du irgendeine ID nehmen auch "x2eo34" und kannst anhand des Typs "ship" dennoch ein Objekt mit genau der ID und diesen Werten erstellen

Faule Socke

Community-Fossil

  • »Faule Socke« ist der Autor dieses Themas

Beiträge: 1 915

Wohnort: Schreibtischstuhl

  • Private Nachricht senden

4

12.10.2008, 00:34

Fred, Chase: OK, ich habe jetzt folgendes Konzept entworfen:

Einmal ein Schfifstyp:

Quellcode

1
2
3
4
<ShipType id="ST_FIGHTER">
    <Weight>...</Wight>
    ...
</ShipType>


Und dann hier das schiff im Spielstand:

Quellcode

1
2
3
4
5
<Ship id="S_..." type="ST_FIGHTER">
    <Pos>0,0,0</Pos>
    ...
</Ship>
...


Danke für eure hilfe, das Problem ist gelöst,

Socke

Werbeanzeige