Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi DX Rennspiel (https://www.delphipraxis.net/34565-dx-rennspiel.html)

Nils_13 24. Nov 2004 19:06


DX Rennspiel
 
Ich hab schon ein Thema eröffnet(DP Thread), aber neue Frage neuer Thread:
Ich will ein Rennspiel mit DX proggen.

Nur die ganzen Sachen die ich selbst gemacht (also alles) läuft nicht.

Folgende Frage, wie kann ich einen Sprite erstellen und ihn bewegen lassen?

:hi:

HaZe 25. Nov 2004 10:18

Re: DX Rennspiel
 
hi

Schau mal bei
http://www.delphigl.com/
or
http://www.neobrothers.de/oldpage1/index.html
or
http://delphigl.de/
vorbei da gibts ein haufen tutorials zu diesen thema :)

ich hoffe ich konnte helfen

cya

HaZe

Nils_13 6. Dez 2004 15:50

Re: DX Rennspiel
 
Wenn ich folgenden Code benutze, dann wird nie etwas angezeigt! Warum?

Delphi-Quellcode:
constructor TAuto.Create(AParent: TSprite);
begin
  inherited Create(AParent);

  Image := Form1.ImageList.Items.Find('Dodge Viper');
  Width := Image.Width;
  Height := Image.Height;
end;

destructor TAuto.Destroy;
begin
  inherited Destroy;
end;

procedure TAuto.DoMove(MoveCount: Integer);
begin
  inherited DoMove(MoveCount);

  if isUp in Form1.Input.States then
  begin
    X := X + cos(degtorad(Angle)) * MoveCount;
    Y := Y - sin(degtorad(Angle)) * MoveCount;
  end;

  if isDown in Form1.Input.States then
  begin
    X := X - cos(degtorad(Angle)) * MoveCount;
    Y := Y - sin(degtorad(Angle)) * MoveCount;
  end;

  if isLeft in Form1.Input.States then
    Angle := Angle - 1;

  if isRight in Form1.Input.States then
    Angle := Angle + 1;
end;

procedure TForm1.TimerTimer(Sender: TObject; LagCount: Integer);
begin
  Input.Update;
  SpriteEngine.Move(5);
  Draw.Surface.Fill(clBlack);
  SpriteEngine.Draw;
  Draw.Flip;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  with TAuto.Create(SpriteEngine.Engine) do
  begin
    X := 50;
    Y := 50;
  end;
end;

end.
Selbst wenn ich den Create-Befehl in einen Timer setzte läufts nicht *seufz*

:roll:

:hi:

Nils_13 6. Dez 2004 17:25

Re: DX Rennspiel
 
:(

Habs oben abgeändert!
Ich wart schon den ganzen Tag auf'ne Antwort!

:freak:

gordon freeman 6. Dez 2004 18:29

Re: DX Rennspiel
 
Zitat:

Zitat von Nils_13
:(

Habs oben abgeändert!
Ich wart schon den ganzen Tag auf'ne Antwort!

:freak:

IMHO ist das längst kein Tag gewesen, oder ist von 16:50 bis 18:25 jetzt schon ein Tag vergangen :gruebel:

Etwas mehr detaillreichtum wäre vieleicht angebracht. In deiner Create-Prozedure verwendest du X und Y, aber wo werden die denn verwendet. So wie ich das sehe weist du nur Werte zu, aber verwendest die Variablen nie (jedenfalls nicht im gezeigten Code)
Vieleicht hängst du den entsprechenden Code-Schnipsel noch an, so dass wir es im Zusammenhang testen können. Es wird schon keiner was klauen :mrgreen:

Nils_13 6. Dez 2004 18:47

Re: DX Rennspiel
 
@Spider: Sorry wenn du den Code liest, aber der Code ist wenigsten der einzige den ich finden konnte! Was den Code betrifft: :thumb:
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
  Dialogs, DXClass, DXSprite, DXInput, DXDraws, Math;

type
  TForm1 = class(TForm)
    Draw: TDXDraw;
    ImageList: TDXImageList;
    Input: TDXInput;
    SpriteEngine: TDXSpriteEngine;
    Timer: TDXTimer;
    procedure TimerTimer(Sender: TObject; LagCount: Integer);
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

  TAuto = class(TImageSpriteEx)
  public
    constructor Create(AParent: TSprite); override;
    destructor Destroy; override;

    procedure DoMove(MoveCount: Integer); override;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

{ TAuto }

constructor TAuto.Create(AParent: TSprite);
begin
  inherited Create(AParent);

  Image := Form1.ImageList.Items.Find('Dodge Viper');
  Width := Image.Width;
  Height := Image.Height;
end;

destructor TAuto.Destroy;
begin
  inherited Destroy;
end;

procedure TAuto.DoMove(MoveCount: Integer);
begin
  inherited DoMove(MoveCount);

  if isUp in Form1.Input.States then
  begin
    X := X + cos(degtorad(Angle)) * MoveCount;
    Y := Y - sin(degtorad(Angle)) * MoveCount;
  end;

  if isDown in Form1.Input.States then
  begin
    X := X - cos(degtorad(Angle)) * MoveCount;
    Y := Y - sin(degtorad(Angle)) * MoveCount;
  end;

  if isLeft in Form1.Input.States then
    Angle := Angle - 1;

  if isRight in Form1.Input.States then
    Angle := Angle + 1;
end;

procedure TForm1.TimerTimer(Sender: TObject; LagCount: Integer);
begin
  Input.Update;
  SpriteEngine.Move(5);
  Draw.Surface.Fill(clBlack);
  SpriteEngine.Draw;
  Draw.Flip;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  with TAuto.Create(SpriteEngine.Engine) do
  begin
    X := 50;
    Y := 50;
  end;
end;

end.

Maximus 6. Dez 2004 18:54

Re: DX Rennspiel
 
Was ist der genau Fehler?
Error beim compilieren?
Irgendeine Fehlermeldung, während des Spiels?
Fehlermeldung bei Spiel start?
Kommt kein Fehler, wird aber trotzdem nicht angezeigt?

Es sind einfach mehr details nötig

//Edit eventuell hängst du einfach mal den Quelltext an ;)

MFG
Maximus

Nils_13 6. Dez 2004 19:05

Re: DX Rennspiel
 
Der Quelltext steht oben :wink:

Die Grafikauflösung hab ich schon höhergestellt

Die Muhkuh 6. Dez 2004 19:46

Re: DX Rennspiel
 
Hi,

nun, immerhin hast du noch gesagt das es mein Code ist. ;)

Zum Problem, das kann gar nicht funktionieren, da du vielleicht die Komponeten nicht auf der Form und das Bild nicht hast.

gordon freeman 7. Dez 2004 13:26

Re: DX Rennspiel
 
Also, ich will ja niemanden kritisieren, aber:

Zitat:

Zitat von Nils_13
Nur die ganzen Sachen die ich selbst gemacht (also alles) läuft nicht.

Und unten schreibst du:

Zitat:

Zitat von Nils_13
@Spider: Sorry wenn du den Code liest, aber der Code ist wenigsten der einzige den ich finden konnte!

Wenn du Probleme zu seinem Code hast kannste ihn auch erstmal per PN ansprechen und fragen!


Zitat:

Zitat von Maximus
eventuell hängst du einfach mal den Quelltext an

Dem kann ich nur zustimmen. Es ist total unnötig diesen Reisenhaufen Code zu posten. Im Anhang wäre er besser aufgehoben. Und aus deiner Antwort werd ich erst recht nich schlau:

Zitat:

Zitat von Nils_13
Der Quelltext steht oben

Die Grafikauflösung hab ich schon höhergestellt

Das der Code oben steht stand überhaupt nicht zur Diskussion! Es ging darum, dass man solchen großen Code nicht einfach in einem Beitrag posten sollte.
Und was hat das mit der Grafikauflösung zu tun? :gruebel:



Außerdem möchte ich jetzt noch eine gnaz persönliche Einschätzung hinzufügen:

[Achtung! Gordon äußert seine Meinung, alle die Angestoßen sein könnten bitte nicht lesen!]
IMHO ist es vieleicht ein bisschen übertrieben, wenn man 3 Threads zur gleichen Zeit offen hat, in denen man ein a) Betriebssystem, einen b) Egoshooter und ein c) DX Rennspiel proggen will. Die Threads a) und b) sind vernünftigerweise zu, aber in diesem Thread c) noch einen "geklauten" Code zu präsentieren und zu behaupten es wäre der eigene, finde ich etwas dreist. Is aber nur meine Meinung. :angel:
[/eigene Meinung]

Die Muhkuh 8. Dez 2004 14:45

Re: DX Rennspiel
 
Zitat:

Zitat von gordon freeman
Also, ich will ja niemanden kritisieren, aber:

Zitat:

Zitat von Nils_13
Nur die ganzen Sachen die ich selbst gemacht (also alles) läuft nicht.

Und unten schreibst du:

Zitat:

Zitat von Nils_13
@Spider: Sorry wenn du den Code liest, aber der Code ist wenigsten der einzige den ich finden konnte!

Wenn du Probleme zu seinem Code hast kannste ihn auch erstmal per PN ansprechen und fragen!


Hi Martin,

komm mal wieder von deinen 180 runter ;) . Auch wenn Nils zuerst geschrieben hat das alles auf seinem Mist gewachsen ist. Das der Sprite sich nicht bewegt hab ich im anderen Post schon beantwortet. Ausserdem ist im Fehler eh noch ein Code, von dem her wird er nicht ganz richtig funktionieren.

*MFG*

Mani :hi:

Neutral General 8. Dez 2004 14:55

Re: DX Rennspiel
 
Also ich würde in die Auto-Create Procedure noch Visible := true hinzufügen und das Bild lieber aus einer DXImageList laden. Außerdem : Hast du den Timer auch auf 1 ms gestellt und enabled ?
Und was genau funktioniert nicht ?
Wird das Auto nicht angezeigt ? Bewegt es sich nicht ? Oder kommt ein Fehler beim complimieren ?

Die Muhkuh 8. Dez 2004 15:20

Re: DX Rennspiel
 
Hi Michael,

das Visible := true kannst du dir sparen. Das ist schon auf true ;).

ImageList ist eine DXImageList. (Hättest du auch gesehen, wenn du im Code etwas weiter oben geguckt hast).


Seine Fehler sind (wahrscheinlich):

1. Kein Timer auf der Form.
2. Timer auf der Form, aber nicht enabled
3. Timer auf der Form, ist active, aber das OnTimer Event wurde nicht zugewiesen
4. Er hat einfach das Bild nicht.

Nils_13 10. Dez 2004 13:45

Re: DX Rennspiel
 
Ich :kotz: gleich !!!

Ich gebs bald auf, ich hab 'ne ganz einfache Frage gestellt, sogar haben welche davon ein Rennspiel programmiert (für alle die eins geproggt haben :wink: ). Nur es wird immer drum'rum gelabert, statt eine normale Antwort zu geben *grins*, ich sitz schon sehr lange am Spiel !!!

:hi:

alcaeus 10. Dez 2004 13:50

Re: DX Rennspiel
 
Hi Nils_13,

Spider hat ein paar Moeglichkeiten aufgezaehlt, welche fuer den Fehler in Frage kommen. Hast du diese schon probiert?
Zum Code den du gepostet hast. Das Auto wird zwar erstellt, aber nur im Timerevent gezeichnet. Ist der Timer denn aktiviert? Ausserdem, welches Intervall hat der Timer? Evtl. laeuft das Auto gleich mal ueber den Bildschirmrand raus

Greetz
alcaeus

Die Muhkuh 10. Dez 2004 14:10

Re: DX Rennspiel
 
Hi Andreas,


ich glaube Nils hat einfach keine Lust, das selbst zu tun ;).

Ich denke er hat schlichteinfach vergessen das OnTimer Event zuzuweisen.


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