Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge

Spiele-Programmierung unter C

B0N3M4N / 6 Antworten / Baumansicht Nickles

Also, ich hätte da ein kleines Problem. Wie bekomme ich eine flüssige Tastatur-Einlesung für Action-2D-Spiele hin. Wenn ich normal Tasten einlese, dann habe ich Probleme mit der tastaturwiederholrate und dem ganzen DOS-Kram. Ich benutze die lib Allegro. Dort gibt es eine funktion mit der ich einlesen kann, ob z.b. die 1. maustaste gedrückt ist oder nicht. Gibt es sowas auch für tastatur?

bei Antwort benachrichtigen
Anonym B0N3M4N „Spiele-Programmierung unter C“
Optionen

Windows oder Dos? Unter Windows kann man einfach die Win32-Funktion GetKeyboardState benutzten, und schon hat man in einem Array alle Zustände aller Tasten auf der Tastatur. Unter Dos hilft nur ein blöder Trick (es sei denn, du programmierst einen neuen Tastatur-Treiber): Tastatur-Wiederholrate zu schnell und Verzögerung so kurz wie möglich einstellen (irgendein Interrtupt im BIOS) und dann im Programm jeden Tastendruck in seiner Wirkung um die Verzögerungszeit verlängern. Dadurch hat man zwar eine langsamere Reaktion beim loslassen der Taste, aber...

mfg, M@rtin

bei Antwort benachrichtigen
(Anonym) B0N3M4N „Spiele-Programmierung unter C“
Optionen

Hallo,

wenn man eine Taste drückt wird diese erst in den Tastaturpuffer geschrieben. Nun besteht das Problem das der Puffer nicht sofort gelehrt wird. Es gibt aber ein C-Befehl mit dem der Puffer sofort entlehrt werden kann. Leider habe ich den Befehl jetzt nicht im Kopf.

Patrick

bei Antwort benachrichtigen
(Anonym) Nachtrag zu: „Hallo, wenn man eine Taste drückt wird diese erst in den Tastaturpuffer...“
Optionen

... die Funktion wäre fflush(stdin) aus

bei Antwort benachrichtigen
lukey (Anonym) B0N3M4N „Spiele-Programmierung unter C“
Optionen

Hiho,

mit Allegro ist das eine sehr einfache Sache. Installiere den Allegro Keyboard Handler mit einem Aufruf von "install_keyboard()". Wenn Du dann wissen willst, ob eine bestimmte Taste gedrückt wurde, frag' einfach das key-Array ab:

if (key[KEY_A]) { bla }
if (key[KEY_ESC]) { blabla }

In der Dokumentation ist das aber alles ausführlichst beschrieben und in den Beispielprogs kann man sicher auch was finden.


Bye,
Jens

bei Antwort benachrichtigen
B0N3M4N lukey (Anonym) „Hiho,mit Allegro ist das eine sehr einfache Sache. Installiere den Allegro...“
Optionen

Danke für den Tip!

bei Antwort benachrichtigen
S. Oliver (Anonym) B0N3M4N „Spiele-Programmierung unter C“
Optionen

Hier nochmal S. Oliver
Natürlich hab' ich diese Hilfe nicht geschrieben, ich habe nur den falschen Link geklickt, da ich auch was zur Gameprogramming geschrieben hab'

Vielmals Entschuldigung!

bei Antwort benachrichtigen