Heyhey ihr,
ich bin grade daran ein kleines PingPong-Spiel zu erstellen mit ganz einfachen
VCL-Komponenten (TForm, TShape).
Als Rackets habe ich die TShape-Komponente verwendet. Nun habe ich folgendes Problem:
Das Spiel sollte man 2-Spieler auf einer Tastatur spielen können (Netzwerk will ich vll auch iwann noch testen), allerdings greife ich ja über das OnKeyPress-Ereignis des Forms auf die gedrückten Tasten zu... nun hat Spieler 1 die Tasten w und s um das Racket nach oben/unten zu steuern und Spieler 2 hat NumPad8 und NumPad2... allerdings ist es jetzt so, jedes Mal wenn Spieler 1 das Racket am nach oben bewegen ist und Spieler 2 auch irgendwohin fahren will (sprich z.B. w und NumPad2 gleichzeitig gedrückt), dann fährt nur das Racket des Spielers, der zuletzt gedrückt hat. Also 'kicken' sich die Tastendrücke jeweils gegenseitig und somit ist's relativ schwer/mühsam zu spielen. ^^
Kann mir da jemand einen Tipp geben, wie ich es u.U. besser machen könnte oder was ich ändern muss?
Danke im Voraus.
Hier der Source-Code welcher die Rackets steuert:
Delphi-Quellcode:
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if not (Racket1.Top <= 0) then
begin
if (Key = 'w') then
begin
Racket1.Top:= Racket1.Top -5;
end;
end;
if not ((Racket1.Top + Racket1.Height) >= Form1.ClientHeight) then
begin
if (Key = 's') then
begin
Racket1.Top:= Racket1.Top +5;
end;
end;
if not (Racket2.Top <= 0) then
begin
if (Ord(Key) = (VK_NUMPAD8 -48)) then
begin
Racket2.Top:= Racket2.Top -5;
end;
end;
if not ((Racket2.Top + Racket2.Height) >= Form1.ClientHeight) then
begin
if (Ord(Key) = (VK_NUMPAD2 -48)) then
begin
Racket2.Top:= Racket2.Top +5;
end;
end;
end;