Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Eine komplette Map in einer Datei unterbringen? (https://www.delphipraxis.net/29090-eine-komplette-map-einer-datei-unterbringen.html)

klomann3 3. Sep 2004 19:57


Eine komplette Map in einer Datei unterbringen?
 
Hallo,
Ich progge gerade eine Art RPG-Maker und mir fällt das speichern und laden der Maps im Map-Editor wirklich schwer.
Deswegen wollt ich in meiner Verzweiflung mal hier nachfragen wie man eine Map mit samt Tiles in eine Datei unterbringt , die möglichst klein gehalten wird.
Diese muss dann nachher auch geladen werden , können.
Bitte helft mir , ich weiß echt nich weiter ,

Gruß
Marvin

Thebe 3. Sep 2004 21:37

Re: Eine komplette Map in einer Datei unterbringen?
 
Wie sollen wir Dir helfen bei der Optimierung der Map Größe z.b. wenn wir gar nicht wissen in welchem Format Du sie abspeicherst, was in den Maps alles drinne stehen muss etc ? Was sollen wir Dir auf deine Frage antworten bis auf "keine Ahnung" wenn Du keine Infos rausrückst ?

klomann3 3. Sep 2004 21:49

Re: Eine komplette Map in einer Datei unterbringen?
 
Was soll ich denn an Infos geben?
Bin ich Gott?

Luckie 3. Sep 2004 22:19

Re: Eine komplette Map in einer Datei unterbringen?
 
Zitat:

Zitat von klomann3
Bin ich Gott?

Gott wohl nicht, aber der einzige, der uns nähere Infos geben kann, wie das aussehen soll.

klomann3 3. Sep 2004 22:47

Re: Eine komplette Map in einer Datei unterbringen?
 
Ich habs mir so gedacht , das ich die Tiles die ich auf die Map setze irgendwo speichere , wo sollt ihr mir sagen.
Dann soll alles in einer Texdatei ähnlichen Datei z.B. so gespeichert werden:

Code:
.........................
.......---..................
........................
.........................
...........-..............
und so weiter , die Punkte sollen die einzelnen Tiles darstellen.
Würde es eine möglichkeit geben das das ganze ungefähr so gespeichert wird?

mimi 4. Sep 2004 18:02

Re: Eine komplette Map in einer Datei unterbringen?
 
ja ich machte das bei meinen spielen immer mit der procedure:
Delphi-Quellcode:
procedure TBO.LoadLevel(FileName:TFileName);
var
  x,i,k,z:Integer;
  Level:TStringList;
  Key, Value, MusicExt,MusicDir,str:String;
begin
  NewGame;
  Level:=TStringList.Create;

  if FileExists(FileName) = True then
    Level.LoadFromFile(FileName)
  else begin
    ShowMessage('Level Datei: ' + #13 + FileName + #13 + 'Wurde nicht gefunden !');
    Exit;
  end;


  with Level do begin
    for i:=IndexOF('Level Optionen {')+1 to Count-1 do begin
      if Level.strings[i] = '}' then break;
      Key:=GetToken(Strings[i],'=',1);
      Value:=Trim(GetToken(Strings[i],'=',2));


      if Pos('MusicExt',Key) > 0 then MusicExt:=Value;
      if Pos('MusicDir',Key) > 0 then MusicDir:=Value;
      if Pos('MusicFiles',Key) > 0 then begin
        MusikListe.Clear;
        if MusicDir = '~' then MusicDir:='default\music\';
        for k:=1 to NumToken( Value,',') do begin

          if UpperCase(ExtractFileExt(GetToken(Value,',',k))) = '' then
            MusikListe.Add( GetExeDir + MusicDir + GetToken(Value,',',k) + '.' + MusicExt )
          else
            MusikListe.Add( GetExeDir + MusicDir + GetToken(Value,',',k))

        end;
      end; // MusicFiles

      if Pos('Bälle',Key) > 0 then begin
        for k:=1 to StrToint(Value) do begin
          ADD_BALL(random(MapX*MapS ),random(MapY*mapS ));
        end;
      end; // Bälle

      if Pos('Gegner',Key) > 0 then begin
        AddG(StrToInt(Value));
        maxIG:=StrToInt(Value);
      end;

      if Pos('ImageDir',Key) > 0 then begin
        if Pos('~',Value) > 0 then
          ImageDir:=GetExeDir + 'default\image'
        else begin

          if FileExists(ExtractFileDir(FileName) + '\image\images.txt') then
            ImageDir:=ExtractFileDir(FileName) + '\image'
          else
            ImageDir:=GetExeDir + 'default\image';
        end;
      end;


    end; // Level Optionen

    z:=0; i:=0; x:=0; str:='';
    z:=IndexOF('Map {')+1;
    Randomize;
    for i:=z to Count-2 do begin
      str:=strings[i];
      for x:=0 to MapX do begin
        if str[x+1] = 'R' then
          CreateStein(x,(i-z),random2(-1,3))
        else
          if str[x+1] = 'K' then
            CreateStein(x,(i-z),none)
          else
            CreateStein(x,(i-z),StrToInt(str[x+1]));
      end;
    end;
  end;

  Music.ClearMusik;
 // for i:=0 to MusikListe.Count -1 do
  //  Music.AddMusik(MusikListe.Strings[i]);

 // music.PlayMusik(MusikListe.strings[random(MusikListe.count-1)],-1);
 // Music.TInit;

end;
du musst sie noch anpassen und die textdatei sieht dann so aus:
Zitat:

Level Optionen {
MusicExt = mid
MusicDir = ~
MusicFiles = 00,01,02,03,04,05,06,07,08,09
Bälle = 0
Gegner = 6
ImageDir = ~
}

Map {
104022030211234K222332321230321332141100
420320443031333K040330444231343440444242
114023130312141K012000201020233213432232
3332114300111132324421244222240243332041
2311241104304433222201314413341310233022
0032043440010244121404022134233143302341
1104312122212323034041030022404121404122
}
die zahelen sind textur indexes und stellen im moment auch nur ein objekt typ da um mehr objekttypen definieren zu können musst du einfach hinter den textur index einfach noch ne zahlschreiben und es bei der such mit berücksichtigen !!!

bigg 4. Sep 2004 18:22

Re: Eine komplette Map in einer Datei unterbringen?
 
n'abend,

wenn alle dateien unbdingt in eine datei müssen, dann pack sie doch
in eine zip. Siehe:

- Winamp
- Wolfenstein ET

mimi 4. Sep 2004 18:30

Re: Eine komplette Map in einer Datei unterbringen?
 
oder selbst einen archiver schreiben ich bin im moemnt dabei, wenn du noch zwei bis drei monhate/jahre warten kannst, hast du einen *G*

bigg 4. Sep 2004 19:19

Re: Eine komplette Map in einer Datei unterbringen?
 
n'abend,

um eine zip zu entpacken braucht man doch nicht viel,
und libs zum pkalgo gibt's wie sand am meer. :wink:

mytar 4. Sep 2004 19:22

Re: Eine komplette Map in einer Datei unterbringen?
 
Und es gibt ja auch die zlib-Unit, welche Delphi beiliegt!
Die erlaubt das Packen und Entpacken von ZIP-Files!

Mit Delphi-Referenz durchsuchenTCompressionStream und Delphi-Referenz durchsuchenTDecompressionStream!

greetz


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:08 Uhr.
Seite 1 von 2  1 2      

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