AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Jump and Run Game [Andora 2D Engine]
Thema durchsuchen
Ansicht
Themen-Optionen

Jump and Run Game [Andora 2D Engine]

Ein Thema von OSIcreate · begonnen am 1. Apr 2008 · letzter Beitrag vom 1. Apr 2008
Antwort Antwort
OSIcreate

Registriert seit: 25. Mär 2008
16 Beiträge
 
#1

Jump and Run Game [Andora 2D Engine]

  Alt 1. Apr 2008, 08:12
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
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Jumg and Run Game

  Alt 1. Apr 2008, 08:14
Korrigier bitte den Titel deines Threads, damit man ihn auch mit der suche findet. Danke.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von igel457
igel457

Registriert seit: 31. Aug 2005
1.622 Beiträge
 
FreePascal / Lazarus
 
#3

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

  Alt 1. Apr 2008, 12:12
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"
Andreas
"Sollen sich auch alle schämen, die gedankenlos sich der Wunder der Wissenschaft und Technik bedienen, und nicht mehr davon geistig erfasst haben als die Kuh von der Botanik der Pflanzen, die sie mit Wohlbehagen frisst." - Albert Einstein
  Mit Zitat antworten Zitat
OSIcreate

Registriert seit: 25. Mär 2008
16 Beiträge
 
#4

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

  Alt 1. Apr 2008, 12:20
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.


mfg
  Mit Zitat antworten Zitat
Looper

Registriert seit: 28. Sep 2007
Ort: Hamburg
131 Beiträge
 
Delphi XE2 Professional
 
#5

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

  Alt 1. Apr 2008, 13:16
Brauchst du jetzt noch Tipps oder net?
mfg Looper
  Mit Zitat antworten Zitat
OSIcreate

Registriert seit: 25. Mär 2008
16 Beiträge
 
#6

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

  Alt 1. Apr 2008, 13:17
jop eindeutig
bissle Nachhilfe mit den Sprits
Funktioniert schon bei der Erstellung nicht
  Mit Zitat antworten Zitat
OSIcreate

Registriert seit: 25. Mär 2008
16 Beiträge
 
#7

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

  Alt 1. Apr 2008, 13:25
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
  Mit Zitat antworten Zitat
Looper

Registriert seit: 28. Sep 2007
Ort: Hamburg
131 Beiträge
 
Delphi XE2 Professional
 
#8

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

  Alt 1. Apr 2008, 14:00
Hast du vielleicht vergessen eine Instanz von TAdSpriteEngine(Ex) zu erzeugen?

mfg Looper
  Mit Zitat antworten Zitat
OSIcreate

Registriert seit: 25. Mär 2008
16 Beiträge
 
#9

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

  Alt 1. Apr 2008, 14:06
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
  Mit Zitat antworten Zitat
Antwort Antwort


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 16:21 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz