mehrere tastatureingaben gleichzeitig bearbeiten
-
hi leute..
ich arbeite gerade nebenbei an einem einfach ping pong spiel.
nur ich haben noch ein problem unzwar, im 2 spieler modus muss der eine spieler immer warten bis der andere eine seiner tasten nicht mehr drückt.
also wenn der eine gerade auf W(nach oben) drück und der andere gleichzeitig den pfeil nach unter oder so, dann bleibt der andere stehen.
meine frage:könnte ich das mit einem thread lösen? wenn, wie kommt ich dann zu WM_KEYDOWN von dem Fenster?
oder gibts noch ne einfachere lösung?
-
Du solltest einfach mit GetKeyState die entsprechenden Tasten prüfen dir gedrückt sind wann immer irgend weine WM_KEYDOWN Nachricht eingeht.
Bzw. solltest Du das auch gemäß eines Timer Intervalles tun.
Vieleicht wäre Raw-Input die bessere Wahl als Tastaturinterface.
-
Wobei du wahrscheinlich auch von der Tastatur selber her, also der HW probleme bekommen koenntest.
Einige (billigst) Tastaturen koennen bestimmte tastenkombinationen nicht parallel "übermitteln"
etwas teuerere und besonders Gamer-Tastaturen machen da HW-Technisch mehr aufwand, das das funktioniert. Aber auch da sind grenzen ... alle 102 Standardtasten gleichzeitig gedrueckt, das liefern selbst die dir ned korrekt.Von der Software her - also speedtechnisch waere DirectX, speziell DirectInput sicher eine gute Wahl.
Und featuremassig mit "virtuellen" Achsen und sowas kannst schnell auf Joystickbetrieb oder Keypad oder sowas umswitchen ...
Und fuer die Bewegung (Achse) koenntest gar eine nichtlineare (beschleunigte) Bewegung ueber tasten einbauen ...Ciao ...
-
metapoint2011 schrieb:
(...)könnte ich das mit einem thread lösen? wenn, wie kommt ich dann zu WM_KEYDOWN von dem Fenster?(...)
Zu der WM_KEYDOWN kommst du über die Fensterfunktion / Nachrichtenempfangsschleife (klar). Ich denke mal, dein Problem ist, dass du entweder noch dabei bist, einen Tastendruck zu bearbeiten, während schon der nächste ankommt. Hier ist eine Möglichkeit, für eigentliche Tastenbearbeitung einen Thread zu starten. So kannst du die nächste WM_KEYDOWN schon empfangen / bearbeiten, während die vorhergehende noch bearbeitet wird.
Du hast dann aber unter Umständen mehrere "Tastendruck-Bearbeitungs-Threads" gleichzeitig. Das wird nicht ganz einfach, das alles unter Kontrolle zu halten und sauber zu synchronisieren.
Ulli