Как перемещать 2 объекта одновременно через клавиатуру

Помогите, пожалуйста. В данном языке не силен, так что некоторых тонкостей не знаю, поэтому не нужно ругаться на мои ошибки, если они есть. Хочу написать небольшую игрушку по типу "Танчики" на двоих. Пока в процессе, это пром. результат. 1-й игрок управляет клавишами W, A, S, D, 2-й - стрелки. Возникла проблема, что перемещение 2-х "танков" одновременно не работает, перемещается только один из них. Как это можно решить и можно ли вообще? И можно ли как-то перемещать объект не путем его перерисовки, а как-нибудь по-другому?

uses ABCObjects, GraphABC;

var
    tank,tank2:PictureABC;
    shag:=10;
    Rectangle:BoundedObjectABC;

procedure MoveTanks(key:integer);
begin
  case key of
    VK_Escape: window.Close;
    VK_Right:
      begin
        tank.Destroy;
        tank:=PictureABC.Create(tank.Left,tank.Top,'tankRight.jpg');
        if tank.Left+tank.Width-40<=windowWidth then
          tank.Left:=tank.Left+shag;
      end;
    VK_Down:
      begin
        tank.Destroy;
        tank:=PictureABC.Create(tank.Left,tank.Top,'tankDown.jpg');
        if tank.Top+tank.Height-40<=windowHeight then
          tank.Top:=tank.Top+shag;
      end;
    VK_Left:
      begin
        tank.Destroy;
        tank:=PictureABC.Create(tank.Left,tank.Top,'tankLeft.jpg');
        if tank.Left>=-40 then
          tank.Left:=tank.Left-shag
      end;
    VK_Up:
      begin
        tank.Destroy;
        tank:=PictureABC.Create(tank.Left,tank.Top,'tank.jpg');
        if tank.Top>=-40 then
          tank.Top:=tank.Top-shag;
      end;
    VK_D:
      begin
        tank2.Destroy;
        tank2:=PictureABC.Create(tank2.Left,tank2.Top,'tank2Right.jpg');
        if tank2.Left+tank2.Width-40<=windowWidth then
          tank2.Left:=tank2.Left+shag;
      end;
    VK_S:
      begin
        tank2.Destroy;
        tank2:=PictureABC.Create(tank2.Left,tank2.Top,'tank2Down.jpg');
        if tank2.Top+tank2.Height-40<=windowHeight then
          tank2.Top:=tank2.Top+shag;
      end;
    VK_A:
      begin
        tank2.Destroy;
        tank2:=PictureABC.Create(tank2.Left,tank2.Top,'tank2Left.jpg');
        if tank2.Left>=-40 then
          tank2.Left:=tank2.Left-shag
      end;
    VK_W:
      begin
        tank2.Destroy;
        tank2:=PictureABC.Create(tank2.Left,tank2.Top,'tank2.jpg');
        if tank2.Top>=-40 then
          tank2.Top:=tank2.Top-shag;
      end;
  end;
end;

procedure OutButton(x,y,mb:integer);
begin
  case mb of 
    1:
      begin
        if (x>=10) and (x<=Rectangle.Width+10) and (y>=10) and (y<=Rectangle.Height+10) then
          window.Close;
      end;
  end;
end;

begin
  window.Width:=736;
  window.Height:=736;
  window.Fill('font for tanks.jpg');
  window.Caption:='MyGame';
  tank:=PictureABC.Create(WindowWidth div 2 - 135,WindowHeight - 210,'tank.jpg');
  tank2:=PictureABC.Create(WindowWidth div 2 - 135,-60,'tank2Down.jpg');
  OnMouseDown:=OutButton;
  OnKeyDown:=MoveTanks;
  Rectangle:=RectangleABC.Create(10,10,50,20,clred);
  TextOut(26,12,'Out');
end.

Ответы (0 шт):