Thema: Delphi DX Rennspiel

Einzelnen Beitrag anzeigen

Nils_13

Registriert seit: 15. Nov 2004
2.647 Beiträge
 
#6

Re: DX Rennspiel

  Alt 6. Dez 2004, 18:47
@Spider: Sorry wenn du den Code liest, aber der Code ist wenigsten der einzige den ich finden konnte! Was den Code betrifft:
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.
  Mit Zitat antworten Zitat