![]() |
Re: Verwaltung von Einstellungen
Hi,
Ich bin mir nicht so sicher. Also es ist ja so, das es nicht darum geht den aktuelle Spielstand zu speichern oder zu laden, sondern nur die Spieldaten. Wie machen es denn andere Spiele.. z.B. Shooter.. Die ganzen Modells, Sprites etc.. Also wenn es wirklich viele Daten sind. Wann werden die geladen und wie werden sie verwaltet? Also ich schreib mal nen kleinen Pseudocode hierhin, jetzt nicht mit Kreaturen/Autos sondern mit Gebieten.
Delphi-Quellcode:
So würde ich das bisher ungefähr machen. Aber ich weiß nicht ob mir das gefällt. Vor allem Zeilen wie:
var
Gebiete: TObjectlist; TileList: TTileList; // TObjectlist procedure BeiSpielStart; begin Gebiete.LoadFromFile('Gebiete.dat'); TileList.LoadFromFile('Tiles.dat'); end; procedure TGebiet.DoEnter(Sender: TObject); begin LoadMap(Self.MapID); end; procedure TGebiet.LoadMap(ID: Integer); var i: Integeger; begin // Map malen for i:= 0 to Gebiete[ID].Tiles.Count-1 do TileList[Gebiete[ID].Tiles[i].ID].Draw; // Kreaturen drauf stellen for i:= 0 to Gebiete[ID].Creatures.Count-1 do with TCreature.Create(...) do begin Assign(Creatures[Gebiete[ID].Creatures[i].ID]); x := Gebiete[ID].Creatures[i].x; y := Gebiete[ID].Creatures[i].y; end; end;
Delphi-Quellcode:
sind mir ein Dorn im Auge und in der Praxis wird sowas eventuell noch schlimmer aussehn.
TileList[Gebiete[ID].Tiles[i].ID].Draw;
|
Re: Verwaltung von Einstellungen
Deine zwei Listen sind ja global und stellen eine Sammlung von Objekten dar (z.B. TGebiet).
Aus dem Objekt selbst greifst Du dann auf die globale Liste zu... statt for i:= 0 to Gebiete[ID].Tiles.Count-1 do sollte doch for i:= 0 to Tiles.Count-1 do auch reichen!? Und darüber hinaus könntest Du die optisch komplizierten Anweisungen in eine globale Funktion bzw. Prozeduren auslagern:
Delphi-Quellcode:
Das ändert zwar an der Anweisung nichts, vereinfacht aber etwas die Lesbarkeit Deines "eigentlichen" Programmcodes.
for i:= 0 to Tiles.Count-1 do
TileListDraw(MapID, I); procedure TileListDraw(MapId, I: Integer); begin TileList[Gebiete[MapID].Tiles[I].ID].Draw; end; stahli |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:22 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz