AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Allgemeine Fragen zu einem Jump and Run Spiel
Thema durchsuchen
Ansicht
Themen-Optionen

Allgemeine Fragen zu einem Jump and Run Spiel

Ein Thema von Looper · begonnen am 12. Mär 2008 · letzter Beitrag vom 21. Mär 2008
 
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#10

Re: Allgemeine Fragen zu einem Jump and Run Spiel

  Alt 12. Mär 2008, 17:14
Zitat:
Man specihert einfach jedes einzelne "Bild"
Das währe unpraktisch und ist auch nicht nötig.

Bei mir habe ich das so gelöst:
Es gibt eine Goable Image Liste in der alle Bilder drin sind.
Jedes Bild ist also ein Objekt. Jedes Objekt hat z.b. eine eindeutige ID, einen namen, Left und Top und soweiter.

Beim Datei Format kannst du jetzt einfach nur die ID und die Left und Top Position speichern.
Hier ist meine Speicher Procedure:
Delphi-Quellcode:
procedure TPluto2DBaseGameA.SaveRooms(const aFileName: String);
var
  sf:TStringList;
  x,y,x2,y2,i:Integer;
  str:String;
begin
  sf:=TStringList.Create;
  str:=IntToStr(CurrPt.X) + ',' + IntToStr(CurrPt.Y);
  sf.Add('CurrRoom:' + str);
  sf.Add(player.Typ + '|' + Player.Id + '|' + IntToStr(Player.Left div 20) + '|' + IntToStr(Player.Top div 20));

  for y:=0 to 10 do begin
    for x:=0 to 10 do begin
      if Assigned(Rooms[x,y]) then begin
        str:='Room:' + IntTostr(x) + ',' + IntTostr(y);
        sf.Add(str);
        for y2:=0 to MapH do begin
          for x2:=0 to MapW do begin
            if (Assigned(Rooms[x,y].Map[x2,y2])) and (not Rooms[x,y].Map[x2,y2].isDel) then begin
              str:=Rooms[x,y].Map[x2,y2].Typ + '|' + Rooms[x,y].Map[x2,y2].Id + '|' +
                   IntTostr(Rooms[x,y].Map[x2,y2].Left div MapS) + '|' +
                   IntTostr(Rooms[x,y].Map[x2,y2].Top div MapS);
              sf.Add(str);
            end;
          end; // for x2
        end; // for y2

        for i:=0 to Rooms[x,y].ListTeleporter.Count-1 do begin
          str:=Rooms[x,y].ItemTeleporter[i].Typ + '|' + Rooms[x,y].ItemTeleporter[i].Id + '|' +
               IntTostr(Rooms[x,y].ItemTeleporter[i].Left div MapS) + '|' +
               IntTostr(Rooms[x,y].ItemTeleporter[i].Top div MapS);
          sf.Add(str);
        end;

        for i:=0 to Rooms[x,y].ListPunkte.Count-1 do begin
          str:=Rooms[x,y].ItemPunkt[i].Typ + '|' + Rooms[x,y].ItemPunkt[i].Id + '|' +
               IntTostr(Rooms[x,y].ItemPunkt[i].Left div MapS) + '|' +
               IntTostr(Rooms[x,y].ItemPunkt[i].Top div MapS);
          sf.Add(str);
        end;

        for i:=0 to Rooms[x,y].ListGegner.Count-1 do begin
          str:=Rooms[x,y].ItemGegner[i].Typ + '|' + Rooms[x,y].ItemGegner[i].Id + '|' +
               IntTostr(Rooms[x,y].ItemGegner[i].Left div MapS) + '|' +
               IntTostr(Rooms[x,y].ItemGegner[i].Top div MapS);
          sf.Add(str);
        end;

      end;
    end; // for x
  end; // y
  
  sf.SaveToFile(aFileName);
end; // TPluto2DBaseGameA.SaveRooms
Das soll nur als Beispiel dinen
Ich meinte mit bin nicht die Datei Endung sondern das Datei Format an sich. Also BINÄR ab speichern z.b. mit TFileStream oder so.

Aber ich denke das einfachste ist für dich per TStringList abzuspeichern.

Je nach dem wie komplex dein Spiel werden soll könnte ich die auch anbieten meine 2D Engine zu nutzen.
Sie basiert auf Canvas und ist im Moment leider nur für Lazarus nutzbar und unter Windows gibt es einige Probleme z.b. das irgendeine Datei nicht gefunden wird, muss ich mal genau nach schauen warum das so ist.

Ich weiß jetzt nicht genau wie einfach Andorra ist. Evlt. gibt es dort ja auch eine ImageListe oder sowas.
Weil damit währe für dich einige Problem gelöst.

Falls du hier angemeldet bist;
http://www.delphigl.com/forum/viewtopic.php?t=7319
kannst du mein 2D Engine schon runter laden. Wenn nicht kann ich sie auch nochmal hier hochladen. Kein Problem.

Ich habe meine 2D Engine eigentlich mit dem Ziel geschrieben das alles einfach ist und wiederkerne aufgaben in der Engine bereist gelöst sind. Z.B. für die Kollision Erkennung.

Oder das laden und verwalten von Bild Objekten. und soweiter.

Evlt. währe das ja was für dich.
(Damit möchte ich aber keine Werbung für meine 2D Engine machen, sondern sie nur erwähnen als altnative
ich selbst habe damit viele Projekte am laufen. Und auch noch Erweiterungen die aber noch nicht Fertig sind und wie gesagt die Engine läuft nur unter Lazarus mit der lib OpBitMap(Mit Paar änderungen könnte man auch auf OpBitmap versichten nur dann kann man nur BMP Dateien laden) zusammen
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:07 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