unit
Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DXDraws, DIB, DXSprite, DXClass, DXInput;
type
TfrmDelphiX1 =
class
(TDXForm)
DXDraw: TDXDraw;
DXSpriteEngine: TDXSpriteEngine;
DXTimer: TDXTimer;
DXImageList: TDXImageList;
DXInput: TDXInput;
procedure
FormCreate(Sender: TObject);
procedure
DXTimerTimer(Sender: TObject; LagCount:
Integer
);
private
public
end
;
TPlayerSprite =
class
(TImageSprite)
protected
procedure
DoMove(MoveCount:
Integer
); override;
end
;
TSpider =
class
(TImageSprite)
Protected
procedure
DoCollision(Sprite: TSprite;
var
Done:
Boolean
); override;
procedure
DoMove(MoveCount:
Integer
); override;
public
constructor
Create(AParent: TSprite); override;
destructor
Destroy; override;
end
;
TBullet =
class
(TImageSprite)
protected
procedure
DoCollision(Sprite: TSprite;
var
Done:
Boolean
); override;
procedure
DoMove(MoveCount:
Integer
); override;
public
constructor
Create(AParent: TSprite); override;
destructor
Destroy; override;
end
;
var
frmDelphiX1: TfrmDelphiX1;
i:
boolean
;
implementation
Procedure
TBullet
.
DoMove(MoveCount:
Integer
);
Begin
inherited
DoMove(MoveCount);
y:=y-
5
;
end
;
constructor
TBullet
.
Create(AParent: TSprite);
begin
inherited
Create(AParent);
end
;
destructor
TBullet
.
Destroy;
begin
inherited
Destroy;
end
;
procedure
TBullet
.
DoCollision(Sprite: TSprite;
var
Done:
Boolean
);
begin
if
Sprite
is
TSpider
then
dead;
Collision;
end
;
Procedure
TSpider
.
DoMove(MoveCount:
Integer
);
begin
inherited
DoMove(MoveCount);
if
x>=
500
then
I:=
false
;
if
x<=
0
then
I:=
true
;
if
i=
true
then
X := X+
1
;
if
i=
false
then
X := X-
1
;
Collision;
end
;
constructor
TSpider
.
Create(AParent: TSprite);
begin
inherited
Create(AParent);
Image := frmDelphiX1
.
DXImageList
.
Items
.
Find(
'Spider'
);
Width := Image
.
Width;
Height := Image
.
Height;
end
;
destructor
TSpider
.
Destroy;
begin
inherited
Destroy;
end
;
procedure
TSpider
.
DoCollision(Sprite: TSprite;
var
Done:
Boolean
);
begin
if
Sprite
is
TBullet
then
dead;
Collision;
end
;
Procedure
TPlayerSprite
.
DoMove(MoveCount:
Integer
);
begin
inherited
DoMove(MoveCount);
if
isLeft
in
frmDelphiX1
.
DXInput
.
States
then
x:=x-
5
;
if
isRight
in
frmDelphiX1
.
DXInput
.
States
then
x:=x+
5
;
if
isup
in
frmDelphiX1
.
DXInput
.
States
then
begin
with
TBullet
.
Create(Engine)
do
begin
PixelCheck :=
True
;
Image := frmDelphiX1
.
dxImageList
.
Items
.
Find(
'Bullet'
);
Image := frmDelphiX1
.
dxImageList
.
Items
.
Find(
'Spider'
);
X := Self
.
X+Self
.
Width -
40
;
Y := Self
.
Y+Self
.
Height -
80
;
Width := Image
.
Width;
Height := Image
.
Height;
end
;
end
;
if
y >= frmDelphiX1
.
DXDraw
.
SurfaceHeight-image
.
Height
then
y := frmDelphiX1
.
DXDraw
.
SurfaceHeight-image
.
Height;
if
x >= frmDelphiX1
.
DXDraw
.
SurfaceWidth -image
.
Width
then
x := frmDelphiX1
.
DXDraw
.
SurfaceWidth -image
.
Width;
if
y <=
0
then
y :=
1
;
if
x <=
0
then
x:=
1
;
end
;
{$R *.dfm}
procedure
TfrmDelphiX1
.
FormCreate(Sender: TObject);
begin
i:=
true
;
with
TSpider
.
Create(DXSpriteEngine
.
Engine)
do
begin
PixelCheck :=
True
;
Image := frmDelphiX1
.
dxImageList
.
Items
.
Find(
'Spider'
);
x:=
10
;
y:=
10
;
Width := Image
.
Width;
Height := Image
.
Height;
end
;
with
TPlayerSprite
.
Create(DXSpriteEngine
.
Engine)
do
begin
PixelCheck :=
True
;
Image := frmDelphiX1
.
dxImageList
.
Items
.
Find(
'GameUnit'
);
x:=
500
;
y:=
500
;
Width := Image
.
Width;
Height := Image
.
Height;
end
;
end
;
procedure
TfrmDelphiX1
.
DXTimerTimer(Sender: TObject; LagCount:
Integer
);
begin
if
not
DXDraw
.
CanDraw
then
exit;
DXInput
.
Update;
DXSpriteEngine
.
Move(LagCount);
DXSpriteEngine
.
Dead;
DXDraw
.
Surface
.
Fill(clWhite);
DXSpriteEngine
.
Draw;
DXDraw
.
Flip;
end
;
end
.