![]() |
Steuerung zweier Spieler über die Tastatur
Hallo :)
Ich arbeite mich derzeit in die Andorra2D Library ein und programmiere deshalb einen Clone des schon oft vergewaltigten Spiels "PONG". ;) Das Spiel besitzt keine KI - man kann allerdings gegen einen Freund/Feind spielen. Gesteuert wird das ganze über die Tastatur. Spieler 1 nutzt die Tasten "O" und "L", Spieler 2 "W" und "S". Dadurch entsteht beim Spielen je doch das Problem, dass sich die Spieler gegenseitig stören. Dies passiert, wenn z.B. Spieler 1 gerade sein Paddle nach ganz oben bewegen möchte und dazu die Taste "O" gedrückt hält. Spieler 2 möchte aber gleichzeitig sein Paddle nach unten bewegen und drückt also die Taste "S". Damit wird die Bewegung des Paddles von Spieler 1 abgebrochen. Wie kann ich das Problem beheben? Das Eventhandling schaut derzeit so aus:
Delphi-Quellcode:
Grüße,
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState); begin if Engine.isRunning then Engine.KeyDown(Sender, Key, Shift); end; ---- procedure tMain.KeyDown(var Sender: TObject; var Key: word; var Shift: tShiftState); begin case Key of ord('O'): pPlayer1.MoveUp; ord('L'): pPlayer1.MoveDown; ord('W'): pPlayer2.MoveUp; ord('S'): pPlayer2.MoveDown; end; end; Boris. |
Re: Steuerung zweier Spieler über die Tastatur
Das ist ein
![]() [Edit] Sry, nicht genau gelesen. Frage die Tasten in deiner Hauptschleife mit GetAsyncKayState ab.
Delphi-Quellcode:
[/Edit]
if GetAsyncKeyState(ord('O')) < 0 then
pPlayer1.MoveUp; |
Re: Steuerung zweier Spieler über die Tastatur
Versuche wie in der "Wormhunter-Demo" von Andorra 2D die Windows-API Funktion "GetKeyState" zu verwenden.
Siehe: ![]() @NamenLozer: Mehr als zwei Tasten sollte jede Tastatur schon gleichzeitig erkennen können. Das ist eher ein "Problem" der VCL. |
Re: Steuerung zweier Spieler über die Tastatur
Zitat:
Zitat:
|
Re: Steuerung zweier Spieler über die Tastatur
Achso, was mit gerade noch einfällt und vielleicht einfacher ist: Setze in OnKeyDown eine Variable für die gedrückte Taste. Während diese Variable gesetzt ist, verschiebst du den Schläger in die entsprechende Richtung. In OnKeyUp setzt du die Variable wieder zurück.
|
Re: Steuerung zweier Spieler über die Tastatur
Zitat:
|
Re: Steuerung zweier Spieler über die Tastatur
Problem gelöst. Danke für die schnelle Hilfe.
Habe die "Wormhunter-Variante" gewählt. ;) Nun läuft das ganze auch noch eine Ecke schneller! :) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:31 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 by Thomas Breitkreuz