Показать сообщение отдельно
  #3  
Старый 07.11.2009, 05:15
Uxas Uxas вне форума
Прохожий
 
Регистрация: 06.11.2009
Сообщения: 3
Репутация: 10
По умолчанию

Пусть я и чайник но узнать где что исправить или как вообще сделать лучше - хочется. Вот код не пугайтеь ))

Код:
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: Пользуемся тегами!
Ответить с цитированием