![]() |
DX Rennspiel
Ich hab schon ein Thema eröffnet(
![]() 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: |
Re: DX Rennspiel
hi
Schau mal bei ![]() or ![]() or ![]() vorbei da gibts ein haufen tutorials zu diesen thema :) ich hoffe ich konnte helfen cya HaZe |
Re: DX Rennspiel
Wenn ich folgenden Code benutze, dann wird nie etwas angezeigt! Warum?
Delphi-Quellcode:
Selbst wenn ich den Create-Befehl in einen Timer setzte läufts nicht *seufz*
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. :roll: :hi: |
Re: DX Rennspiel
:(
Habs oben abgeändert! Ich wart schon den ganzen Tag auf'ne Antwort! :freak: |
Re: DX Rennspiel
Zitat:
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: |
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. |
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 |
Re: DX Rennspiel
Der Quelltext steht oben :wink:
Die Grafikauflösung hab ich schon höhergestellt |
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. |
Re: DX Rennspiel
Also, ich will ja niemanden kritisieren, aber:
Zitat:
Zitat:
Zitat:
Zitat:
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] |
Re: DX Rennspiel
Zitat:
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: |
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 ? |
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. |
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: |
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 |
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