Hallo zusammen,
folgendes Problem beschäftigt mich gerade:
Ich möchte eine Art PingPongSpiel programmieren, dazu verwende ich zwei Rechteckige Shapes als Schläger. Das Problem ist wenn ich eine Taste "Pfeil Hoch" drücke dann geht der eine Schläger auch hoch, wenn ich dann ncoh zusätzlich die Taste "Q" drücke, damit der andere Schläger hoch geht und dann eine von beiden loslasse, dann bleiben beide stehen. Das beide sich gemeinsam bewegen bekomme ich hin, aber wenn ich eine Taste loslasse und die andere nochgedrückt ist, dann bleiben beide stehen. Hab schon mehere Varianten durch Suche bei google und hier ausprobiert, aber keine half wirklich. Mein momentaner Code dazu sieht folgendermassen aus:
Delphi-Quellcode:
procedure bewegen();
begin
if (keyarray[38] and not keyarray[81]) then
begin
form1.shape1.top := form1.shape1.top - 2;
end;
if (keyarray[38]) and (keyarray[81]) then
begin
form1.shape1.top := form1.shape1.top - 2;
form1.shape2.top := form1.shape2.top - 2;
end;
end;
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
keyarray[key]:=true;
bewegen();
end;
procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
keyarray[key]:=false;
bewegen();
end;
Dabei ist keyarray[1..255] of boolean. 38 bedeutet Taste "Pfeil oben" und 81 bedeutet "Q".
Woran kann das denn liegen? Wird bewegen() vielelciht zuschnell aufgerufen?
Gruß