Пусть я и чайник но узнать где что исправить или как вообще сделать лучше - хочется. Вот код не пугайтеь ))
Код:
var
Form1: TForm1;
x1,y1: double;
k: integer;
implementation
{$R *.dfm}
type
TK1 = class(TimageSprite)
protected
procedure DoMove(MoveCount: Integer); override;
public
end;
TK2 = class(TimageSprite)
protected
Procedure DoCollision(Sprite: TSprite; var Done: Boolean); override;
Procedure DoMove(MoveCount: Integer); override;
public
end;
Procedure TK1.DoMove(MoveCount: Integer);
begin
inherited DoMove(MoveCount);
if isLeft in Form1.DXInput1.States then begin k:=1; end;
if isRight in Form1.DXInput1.States then begin k:=4; end;
if isUp in Form1.DXInput1.States then begin k:=2; end;
if isDown in Form1.DXInput1.States then begin k:=3; end;
if k=4 then x:=x+5;
if k=1 then x:=x-5;
if k=2 then y:=y-5;
if k=3 then y:=y+5;
if y>=form1.DXDraw1.SurfaceHeight-image.Height then
y:=form1.DXDraw1.SurfaceHeight-image.Height;
if x >= form1.DXDraw1.SurfaceWidth -image.Width then
x:=form1.DXDraw1.SurfaceWidth -image.Width;
if y<=0 then
y:=1;
if x<=0 then
x:=1;
end;
Procedure tk2.DoCollision(Sprite: TSprite; var Done: Boolean);
begin
if Sprite is Tk1 then k:=5;
Collision;
end;
Procedure TK2.DoMove(MoveCount: Integer);
begin
inherited DoMove(MoveCount);
if k=5 then
begin
x:=x1;
y:=y1;
end;
Collision;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Dxdraw1.Cursor:=crNone;
with TK1.Create(Dxspriteengine1.Engine) do
begin
PixelCheck := True;
Image := form1.dxImageList1.Items.Find('k1');
x:=0;
y:=0;
Width := Image.Width;
Height := Image.Height;
AnimCount := Image.PatternCount;
AnimLooped := True;
AnimSpeed := 10 / 500;
end;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
with TK2.Create(Dxspriteengine1.Engine) do
begin
PixelCheck := True;
Image := form1.dxImageList1.Items.Find('k2');
x:=random(1024-50);
y:=random(768-50);
x1:=x;
y1:=y;
Width := Image.Width;
Height := Image.Height;
AnimCount := Image.PatternCount;
AnimLooped := True;
AnimSpeed := 10 / 500;
end;
end;
procedure TForm1.DXTimer1Timer(Sender: TObject; LagCount: Integer);
begin
if not DXDraw1.CanDraw then exit;
DXInput1.Update;
DXSpriteEngine1.Move(LagCount);
DXSpriteEngine1.Dead;
DXDraw1.Surface.Fill(0);
DXSpriteEngine1.Draw;
DXDraw1.Flip;
end;
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key=VK_ESCAPE then application.Terminate;
end;
end.
Admin: Пользуемся тегами!