Доброго времени суток. Нужна программа, похожая на тир, должен бегать смайлик по экрану и есть пистолет с прицелом, когда координаты прицела совпали с координатами смайла должен быть выстрел. Делаю все это с помощью DelphiX. Программа есть, но я не могу сделать чтобы смайл бегал по экрану и чтобы был выстрел. Помогите пожалуйста. Вот моя программа
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DXClass, DXSprite, DXInput, DXDraws;
type
TForm1 = class(TDXForm)
DXDraw1: TDXDraw;
DXImageList1: TDXImageList;
DXInput1: TDXInput;
DXSpriteEngine1: TDXSpriteEngine;
DXTimer1: TDXTimer;
DXImageList2: TDXImageList;
DXTimer2: TDXTimer;
DXImageList3: TDXImageList;
DXTimer3: TDXTimer;
procedure DXTimer1Timer(Sender: TObject; LagCount: Integer);
procedure FormCreate(Sender: TObject);
procedure DXTimer2Timer(Sender: TObject; LagCount: Integer);
procedure DXTimer3Timer(Sender: TObject; LagCount: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
Type
TPlayer=class(TImageSprite)
Protected
procedure DoMove(MoveCount: integer); override;
public
constructor Create(AParent: TSprite); override;
Destructor Destroy; override;
end;
TPricel=class(TImageSprite)
Protected
procedure DoMove(MoveCount: integer); override;
public
constructor Create(AParent: TSprite); override;
Destructor Destroy; override;
end;
TSmile=class(TImageSprite)
Protected
procedure DoMove(MoveCount: integer); override;
public
constructor Create(AParent: TSprite); override;
Destructor Destroy; override;
end;
{ TPlayer }
constructor TPlayer.Create(AParent: TSprite);
begin
inherited
Create(AParent);
Image:=Form1.DXImageList1.Items.Find('player');
//çàíîñèì êàðòèíêó
Width:=Image.Width;
Height:=Image.Height;
end;
destructor TPlayer.Destroy;
begin
inherited
Destroy;
end;
procedure TPlayer.DoMove(MoveCount: integer);
begin
inherited;
if isLeft in Form1.DXInput1.States then x:=x-1;
if isRight in Form1.DXInput1.States then x:=x+1;
if isUp in Form1.DXInput1.States then y:=y-1;
if isDown in Form1.DXInput1.States then y:=y+1;
end;
procedure TForm1.DXTimer1Timer(Sender: TObject; LagCount: Integer);
begin
DXInput1.Update;
DXSpriteEngine1.Move(LagCount);
DXSpriteEngine1.Dead;
DXDraw1.Surface.Fill(0);
DXSpriteEngine1.Draw;
DXDraw1.Flip;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
With TPlayer.Create(DXSpriteEngine1.Engine) do
begin
Image:=Form1.DXImageList1.Items.Find('player');
//çàíîñèì êàðòèíêó
x:=35;
y:=45;
Width:=Image.Width;
Height:=Image.Height;
end;
With TPricel.Create(DXSpriteEngine1.Engine) do
begin
Image:=Form1.DXImageList2.Items.Find('pricel');
x:=60;
y:=35;
Width:=Image.Width;
Height:=Image.Height;
end;
With TSmile.Create(DXSpriteEngine1.Engine) do
begin
Image:=Form1.DXImageList3.Items.Find('smile');
x:=1;
y:=1;
Width:=Image.Width;
Height:=Image.Height;
end;
end;
{ TPricel }
constructor TPricel.Create(AParent: TSprite);
begin
inherited
Create(AParent);
Image:=Form1.DXImageList2.Items.Find('pricel');
Width:=Image.Width;
Height:=Image.Height;
end;
destructor TPricel.Destroy;
begin
inherited
Destroy;
end;
procedure TPricel.DoMove(MoveCount: integer);
begin
inherited;
if isLeft in Form1.DXInput1.States then x:=x-1;
if isRight in Form1.DXInput1.States then x:=x+1;
if isUp in Form1.DXInput1.States then y:=y-1;
if isDown in Form1.DXInput1.States then y:=y+1;
end;
procedure TForm1.DXTimer2Timer(Sender: TObject; LagCount: Integer);
begin
DXInput1.Update;
DXSpriteEngine1.Move(LagCount);
DXSpriteEngine1.Dead;
DXDraw1.Surface.Fill(0);
DXSpriteEngine1.Draw;
DXDraw1.Flip;
end;
{ TSmile }
constructor TSmile.Create(AParent: TSprite);
begin
inherited
Create(AParent);
Image:=Form1.DXImageList3.Items.Find('smile');
Width:=Image.Width;
Height:=Image.Height;
end;
destructor TSmile.Destroy;
begin
inherited
Destroy;
end;
procedure TSmile.DoMove(MoveCount: integer);
begin
inherited;
if isLeft in Form1.DXInput1.States then x:=x-1;
if isRight in Form1.DXInput1.States then x:=x+1;
if isUp in Form1.DXInput1.States then y:=y-1;
if isDown in Form1.DXInput1.States then y:=y+1;
end;
procedure TForm1.DXTimer3Timer(Sender: TObject; LagCount: Integer);
begin
DXInput1.Update;
DXSpriteEngine1.Move(LagCount);
DXSpriteEngine1.Dead;
DXDraw1.Surface.Fill(0);
DXSpriteEngine1.Draw;
DXDraw1.Flip;
end;
end.