![]() |
TForm.OnKeyPress auf gleichzeitig gedrückte Keys reagieren?
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; |
Re: TForm.OnKeyPress auf gleichzeitig gedrückte Keys reagier
hast du irgendwie eine schleife?
kannste vllt. mit GetAsyncKeyState was anfangen... GetAsyncKeyState(Taste) Taste= VK_irgendwas oder Ord('A') f+r A oder a,buchstaben GRO? schreiben! mfg |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:35 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz