
19.12.2013, 02:27
|
Прохожий
|
|
Регистрация: 18.12.2013
Сообщения: 5
Версия Delphi: Delphi 7
Репутация: 10
|
|
Код:
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
{ 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;
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;
// 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');
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.
|