Как перемещать 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.