getkey bei nichteingabe überspringen?
-
Hallo
ich bin ein totaler Anfänger und muss für ein Projekt ein kleines Spiel programmieren.
Für die grafische Ausgabe benutzen wir IGEL.
Bin soweit das ich einen Ball habe der Zufällig durchs Bild fliegt. Diesen möchte ich mit einem Fadenkreuz abschießen.
Ich wollte das Fadenkreuz mit getkey steuern allerdings habe ich das Problem das sobald getkey erreicht wird das Programm stoppt und auf eine Eingabe wartet.
Wie bekomme ich es hin das das Programm trotzdem weiterläuft?
Gruß
-
Das Problem ist, dass das Programm beim Aufruf getkey solange wartet bis eine Eingabe kommt wodurch der GUI-Thread blockiert wird.
Mögliche Lösungen sind:
- Eine asynchrone (d.h. nichtblockierende) Version von getkey verwenden. Ich kenne IGEL nicht, keine Ahnung ob eine solche Funktion existiert.
- Du erzeugst einen nebenläufigen Thread, der auf Benutzereingaben wartet und diese dann z.B. an den GUI-Thread übergibt.
-
sfml beispielsweise bietet ein event-system an (es gibt auch key-events, versteht sich) und zudem eine funktion die prüft, ob eine taste gedrückt ist oder nicht.
-
Danke für den 1. Tipp
Habe die Funktion GetAsyncKeyState gefunden. Werde damit mal mein glück versuchen

-
Wenn das von der WinAPI kommt solltest du auch GetKeyState kennen. Das blockiert auch nicht.