Показать сообщение отдельно
  #26  
Старый 21.01.2012, 21:03
Kaktuz Kaktuz вне форума
Начинающий
 
Регистрация: 30.10.2011
Сообщения: 149
Репутация: 10
По умолчанию

Вот набросок обычного движения через таймер.
Код:
procedure TForm1.TimerUpTimer(Sender: TObject);
begin
if TUp = 1 then
  begin
  Player.Canvas.CopyRect(Rect(0, 0, 32, 32), PlayerBit.Canvas, Rect(16, 16, 32, 32));
  Player.Top:=Player.Top-8;
  TUp := 2;
  Exit;
  end;

if TUp = 2 then
  begin
  Player.Canvas.CopyRect(Rect(0, 0, 32, 32), PlayerBit.Canvas, Rect(0, 16, 16, 32));
  Player.Top:=Player.Top-8;
  TUp := 3;
  Exit;
  end;

if TUp = 3 then
  begin
  Player.Canvas.CopyRect(Rect(0, 0, 32, 32), PlayerBit.Canvas, Rect(32, 16, 48, 32));
  Player.Top:=Player.Top-8;
  TUp := 4;
  Exit;
  end;

if TUp = 4 then
  begin
  Player.Canvas.CopyRect(Rect(0, 0, 32, 32), PlayerBit.Canvas, Rect(0, 16, 16, 32));
  Player.Top:=Player.Top-8;
  TimerUp.Enabled := False;
  Up.Enabled := True;
  Exit;
  end;
end;

procedure TForm1.UpExecute(Sender: TObject);
var u: integer;
begin
Up.Enabled := False;
if PU = 1 then
  begin
  u := StrToInt(Map.Strings[StrToInt(PlayerY)-1][StrToInt(PlayerX)]);
  if (u = 0) or (u = 2) or (u = 3) or (u = 5) then
    begin
    TUp := 1;
    PlayerY := IntToStr(StrToInt(PlayerY)-1);
    TimerUp.Enabled := True;
    end;
  end
else
  begin
  Player.Canvas.CopyRect(Rect(0, 0, 32, 32), PlayerBit.Canvas, Rect(0, 16, 16, 32));
  PL:=0; PR:=0; PU:=1; PD:=0;
  Up.Enabled := True;
  end;
end;
Ответить с цитированием