Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Jump and Run Game [Andora 2D Engine] (https://www.delphipraxis.net/111246-jump-run-game-%5Bandora-2d-engine%5D.html)

OSIcreate 1. Apr 2008 08:12


Jump and Run Game [Andora 2D Engine]
 
Moin,

Bin grad dabei n Jump and Run Game zu entwickeln mit der Andora 2D Engine. Hat jemand von euch ne Idee wie ich die das Level (Spielfeld) abbilden könnte. Bis jetzt hab ich ein Hintergrundimage TadImage und darüber ein Array von Tadimages die bei der Zeichenprocedure die von der Engine ausgeht gezeichenet werden. Problem wenn sich die Figur bewegt immer neues laden der Bilder ...
ein besserer Vorschlag???

Oder hat jemand von euch außer dem normalen Tutorials von Andora 2D noch Infos bzw Tutorials???


Mfg

Luckie 1. Apr 2008 08:14

Re: Jumg and Run Game
 
Korrigier bitte den Titel deines Threads, damit man ihn auch mit der suche findet. Danke.

igel457 1. Apr 2008 12:12

Re: Jump and Run Game [Andora 2D Engine]
 
Hast du dir mal das SpriteEngine-Tutorial angeschaut? Die SpriteEngine ist extra dafür da, sich um die einzelnen bewegten Bilder (Sprites) in deinem Spiel zu kümmern. Allerdings ist das ganze halt komplett Objektorientiert - du solltest dich also damit auskennen.

Allgemein kannst du alle Animationsframes in ein einziges Bild einfügen. Siehe dazu auch hier:
http://andorra.sourceforge.net/index.php?bb=tutot2ger
Abschnitt "Bewegungen und Animationen"

OSIcreate 1. Apr 2008 12:20

Re: Jump and Run Game [Andora 2D Engine]
 
hi

die SpriteEngine hab ich mir schon angeschaut klar mir gehts eich eher um ne Grundidee umd den logischen Aufbau meines levels
mein Level muss sich ja theoretisch nicht bewegen.
:firejump:

mfg

Looper 1. Apr 2008 13:16

Re: Jump and Run Game [Andora 2D Engine]
 
Brauchst du jetzt noch Tipps oder net?
mfg Looper

OSIcreate 1. Apr 2008 13:17

Re: Jump and Run Game [Andora 2D Engine]
 
jop eindeutig
bissle Nachhilfe mit den Sprits
Funktioniert schon bei der Erstellung nicht

OSIcreate 1. Apr 2008 13:25

Re: Jump and Run Game [Andora 2D Engine]
 
Zum Beispiel hab ich hier n Fehler beim erzeugen eines Testbildes praktisch ein Hintergrundstein im Spiel

TSteinII is ne eigen Klasse die ich mir gemacht hab

Delphi-Quellcode:
  //------- Spielfeld ------
  imgHintergrund := dat.getHinteg(dat.getlevel(0).gethintergrund);
  //feld.createlevel(dat,0,adSpriteEngine);

  test := TSteinII.Create(adSpriteEngine);
  test.initialize(0,0,-150,2,0);
  test.Image := dat.getSteine(2);


  //yoda := TFigure.create(dat.getFigureimg,0,panSpielfeld);
  //yoda.imgAnzeige.Left := 30;
  //yoda.imgAnzeige.top := 300;
beim Create des TSteinII

Delphi-Quellcode:
unit USteinII;

interface

uses
  AdDraws, AdClasses, AdTypes, AdSprites;

type

  TSteinII = class(TBackgroundSprite)
  private
    X : integer;
    Y : integer;
    wert : integer;
    spezial : integer;
  protected
    procedure DoMove(TimeGap: double);override;  
  public
    XSpeed:integer;
    constructor Create(AParent: TSprite);override;
    procedure initialize(posx,posy,speed,wert,speziale : integer);
    procedure SetLine;
  end;  

implementation

//------------------------------------------------------------------------------
//                          On Create
//------------------------------------------------------------------------------
constructor TSteinII.Create(AParent: TSprite);
begin
  inherited;
  X := 0;
  Y := 0;
end;
//______________________________________________________________________________

//------------------------------------------------------------------------------
//                         Initialize
//------------------------------------------------------------------------------
procedure TSteinII.initialize(posx,posy,speed,wert,speziale : integer);
begin
  self.wert := wert;
  self.XSpeed := speed;
  self.X := posx;
  self.Y := posy;
  self.spezial := speziale;
end;
//______________________________________________________________________________



//------------------------------------------------------------------------------
//                         Do Move
//------------------------------------------------------------------------------
procedure TSteinII.DoMove(TimeGap: double);
begin
  inherited;

  {//Der Teil aus der Renderprozedur, der sich um die Bewegungen kümmert
  X := X + XSpeed*TimeGap;
  if ((X > Engine.SurfaceRect.Right) and (XSpeed > 0)) or
     ((X < -96) and (XSpeed < 0)) then
  begin
    SetLine;
  end; }
end;
//______________________________________________________________________________


//------------------------------------------------------------------------------
//                         SetLine
//------------------------------------------------------------------------------
procedure TSteinII.SetLine;
begin
  {//Bewegt die Figur in eine neue Ebene
  XSpeed := -XSpeed;
  if XSpeed > 0 then
  begin
    AnimStart := 0;
    AnimStop := 7;
    X := -96;
  end
  else
  begin
    AnimStart := 8;
    AnimStop := 15;
    X := Engine.SurfaceRect.Right+96;
  end;
  Y := Random(Engine.SurfaceRect.Right-96); }
end;
//______________________________________________________________________________


end.


Fehler Folgender in der Unit AdSprites bei AParent.Add(self)

Delphi-Quellcode:

procedure TSprite.SetParent(AParent: TSprite);
begin
  if AParent <> nil then
  begin
    FParent := AParent;
    FEngine := FParent.Engine;
    if FParent <> nil then
    begin
      FParent.FList.Remove(Self);
    end;
    AParent.Add(Self);
  end
  else
  begin
    FParent := nil;
    FEngine := nil;
  end;
end;
wo liegt hier der Fehler ich krieg ne Zugriffsverletzung

Looper 1. Apr 2008 14:00

Re: Jump and Run Game [Andora 2D Engine]
 
Hast du vielleicht vergessen eine Instanz von TAdSpriteEngine(Ex) zu erzeugen?

mfg Looper

OSIcreate 1. Apr 2008 14:06

Re: Jump and Run Game [Andora 2D Engine]
 
nö die sollte eich da sein


Delphi-Quellcode:
//------------------------------------------------------------------------------
//                       2d Engien Erzeugen
//------------------------------------------------------------------------------
procedure TFrmMain.grafikEngineCreate;
begin
  AdDraw := TAdDraw.Create(self);
  AdDraw.DllName := 'AndorraOGL.dll';
  AdPerCounter := TAdPerformanceCounter.Create;
  adSpriteEngine := TSpriteEngine.Create(nil);
  adSpriteEngine.Surface := adDraw;
end;
//______________________________________________________________________________
Aufruf der Procedure

Delphi-Quellcode:
//------------------------------------------------------------------------------
//                       On Create
//------------------------------------------------------------------------------
procedure TFrmMain.FormCreate(Sender: TObject);
begin
  //------ 2D Engine wird erzeugt -----
  grafikEngineCreate;

  if AdDraw.Initialize then
  begin

    //------ Spieldaten werden geladen -----
    dat := TData.Create(adDraw);
    dat.dataload;

    //------ Spielfeld wird geladen ----
    feld := TFeld.create(54,50);    

  end
  else
  begin
    Application.MessageBox('Fehler beim Laden der Grafik Engine!','ERROR',MB_OK +MB_ICONERROR);
    Close;
  end;
end;
//______________________________________________________________________________
mfg


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:03 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