unit
XGame1;
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
{
Private declarations }
public
{
Public declarations }
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
//
*************** TBullet
***********
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;
//
*********** TSpider **************
Procedure
TSpider.DoMove(MoveCount:
Integer);
begin
inherited
DoMove(MoveCount);
if
x>=
500
then
I:=
false;
//
X>=
>>>
if
x<=
0
then
I:=
true;
//
X<=
<<<
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
//
TBullet,
if
Sprite
is
TBullet
then
dead;
Collision;
//
end;
//
********************* TPlayerSprite *********************
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');
//
ImageList`
x:=10;
//
x
y:=10;
//
y
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;
//
DirectX
DXInput.Update;
DXSpriteEngine.Move(LagCount);
DXSpriteEngine.Dead;
DXDraw.Surface.Fill(clWhite);
DXSpriteEngine.Draw;
DXDraw.Flip;
end;
end.
|