![]() |
rpg-herumlaufkarten-speicherformat
Hi,
ich arbeite an einem RPG mit rumlaufen und kämpfen, ganz im Pokemon-Stil. Jetzt habe ich mir überlegt, die Karte, auf der man momentan rumläuft (aus einzelnen Feldern aufgebaut) so zu laden:
Delphi-Quellcode:
Meine Frage ist jetzt:
type
TKarte = Array of Array of TFeld; var AktuelleKarte:TKarte; ... procedure KarteEinlesen(var ZuAenderndeKarte:TKarte;const AKarte:TKarte); var i,j:integer; begin SetLength(ZuAenderndeKarte,Length(AKarte),Length(AKarte[0])); for i := 0 to High(AKarte) do for j := 0 to High(AKarte[0]) do ZuAenderndeKarte[i,j] := AKarte[i,j]; end; wie soll ich die Karten-arrays speichern? Ich suche irgendeine Datenbankfreie Lösung, um so eine Teilkarte in einer Datei zu speichern. Ich hoffe, ihr versteht mein Problem :dp: |
Re: rpg-herumlaufkarten-speicherformat
Hi,
poste mal bitte die Deklaration von TFeld. |
Re: rpg-herumlaufkarten-speicherformat
hab mir noch nix überlegt, es könnte ein integer sein, also:
0 für leeres feld mit gras 1 für leeres feld mir kies 2 für felswand ... |
Re: rpg-herumlaufkarten-speicherformat
Also wenn 255 verschiedene Eigenschaften reichen, dann würd ichs über chars (chr & ord) machen:
Delphi-Quellcode:
Ungetestet!!
//Array
type TKarte = array of array of byte; //Speichern list := TStringlist.Create; try list.BeginUpdate; for i := 0 to High(AKarte) do begin buf := ''; for j := 0 to High(AKarte[i]) do buf := buf + chr(AKarte[i][j]); list.Add(buf); end; list.EndUpdate; list.SaveToFile('datei.txt'); finally FreeAndNil(list); end; //Laden list := TStringlist.Create; try list.LoadFromFile('datei.txt'); SetLength(AKarte,list.Count-1); for i := 0 to High(AKarte) do begin SetLength(AKarte[i],length(list[i])-1); for j := 0 to High(AKarte[i]) do AKarte[i][j] := ord(list[i][j]); end; finally FreeAndNil(list); end; Bei größerem Bedarf an Eigenschaften: Entweder du nutzt ![]() ![]() |
Re: rpg-herumlaufkarten-speicherformat
ja, danke.
ich denke mal, ich hab es grob verstanden. Danke dir, mfG :wink: |
Re: rpg-herumlaufkarten-speicherformat
Hab jetzt anhand deiner Beitragszahl geschätzt, dass du Delphi schon soweit beherrscht :-)
Wenn du's nich verstehst / umsetzen kannst dann poste nur wieder hier rein^^ |
Re: rpg-herumlaufkarten-speicherformat
ja ich versteh's,
ich hab mir ja auch erst überlegt, ne textdatei zu nehmen, nur dachte ich, dass es was besseres gibt und dass es leicht zu manipulieren wäre, aber wenn ich das als ressource mit einbinde oder die datei mit ner anderen Endung tarne, haut das schon hin :mrgreen: |
Re: rpg-herumlaufkarten-speicherformat
Hey,
Soweit ich mich entsinnen kann, kann man doch auch selbst Dateien von einem bestimmten Typ erstellen
Delphi-Quellcode:
Jetzt kannst du angenehm alle Daten der Felder in die Datei speichern. Das Problem, dass jemand die Datei manipulieren könnte, fällt auch weg. Außerdem ist es ne sehr angenehme Sache, wenn TFeld aus mehreren Variablen verschiedenen Typs besteht.
FeldDatei = File of TFeld
Das ganze klappt auf jeden Fall wenn dein TFeld ein Record-Typ ist und alle Elemente finit sind, also keine dynamischen Arrays enthält. Wie es bei einer Klasse aussieht kann ich dir nicht sagen, aber du könntest dort einfach einen Record für alle Daten machen, der dann als Eigenschaft der Klasse alle Daten speichert die später auch in der Datei gespeichert werden soll. Dann kannst du ein FileTyp von diesem Record machen und wieder angenehm speichern. Wenn du willst, kann ich dir ja mal ein Beispiel daszu schreiben |
Re: rpg-herumlaufkarten-speicherformat
Der klassische Weg dafür:
Ein array of array of Byte, das man aus ner binären. Dazu gehört außerdem ein "Tileset", das ist ein Bild mit 16*16=256 Tiles. (ein Tile ist jeweils die kleinste Fläche auf einer Karte) Das ist das Ground-Layer, also der Boden. Dazu gehört nochmal ein array[Byte] of Boolean, das darstellt, ob man über ein bestimmtes Tile gehen kann oder nicht. Über den Ground-Layer kommt nochmal ein gleich aufgebautes Layer, das dann Objekte wie Häuser, Zäune usw. enthält. Eine Karte besteht also aus Breite, Höhe, Tilesets für beide Layer, jeweils mit Kollisions-Map und zwei Maps für die Layer. |
Re: rpg-herumlaufkarten-speicherformat
:shock: das wird ja immer komplizierter!
nicht, dass ich es nicht verstehen würde, aber das alles in source sinnvoll umzusetzen könnte schwierig werden. außerdem muss ich mir ja vorher noch einen map-editor programmieren um die maps zu speichern :pale: ... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:48 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 by Thomas Breitkreuz