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.