Bedingter Sprung Pfeiltaste oder keine Taste
-
Hallo zusammen!
Ich habe da ein Problem und hab gerade nicht so wirklich die zündende Idee!
In meinem Programm sollen drei Funktionen immer wieder aufgerufen werden.
Die eine wenn die Pfeiltase nach oben gedrückt wird, die zweite wenn die Pfeiltaste nach unten gedrückt wird und die dritte wenn in dem Schleifendurchlauf eben keine Taste gedrückt wird.
Jetzt bleibt leider mein Programm eben an der getch-Funktion stehen und wartet auf eine Eingabe und somit komme ich nie zur dritten Funktion weil ja immer eine Taste gedrückt werden muss.
Hat jemand eine zündende Idee für mich?Hier der Ausschnitt aus meinem Programm:
while(x==0){ c = getch(); if(c==224) c = getch(); else { if(c==27) x=1; } switch (c){ case 72: accel(); break; case 80: decel(); break; case 0: roll(); break; default: roll(); break; }Noch zum Verständniss des Programmausschnitts:
beim drücken einer der Pfeiltasten bekommt c erst den Wert 224. Anschließend wird dadurch der Code für die Sondertasten abgefragt wobei 72 rauf und 80 runter ist.
27 ist der ASCI Code für die ESC-TasteIch sag schon mal Danke im Voraus!
Gruß
Andreas
-
Hallo Schunki,
ist nicht sehr schön, sollte aber funktionieren:
#include <windows.h> #include <iostream> #include <conio.h> int getKey() { int x = getch(); if(224 == x) { x = getch(); } return x; } int main(int argc, char *argv[]) { int keyhit = 0; while(27 != keyhit) { if(_kbhit()) { keyhit = getKey(); switch(keyhit) { case 72: accel(); break; case 80: decel(); break; } } else roll(); } }Viele Grüße,
MaBa
-
Hallo MaBa!
Schon mal vielen Dank für Deine Antwort!
Soweit versteh ich Deine Lösung. Ich kann nur die Zeile mit der If-Bedingung nicht so wirklich deuten! Was meinst Du denn mit
if(_kbhit())
Soll _kbhit eine Variable sein? Wenn ja, dann finde ich die aber sonst nirgens. Oder hast Du Dich hier einfach nur vertippt?
Gruß
Andi
-
#include <windows.h> #include <conio.h> // -> plattformabhängig_kbhit() ist eine Funktion nur auf Windows-Betriebssystemen und ist deklariert in conio.h. Falls du für Linux, Mac oder generell plattformunabhängig programmieren möchtest, scheidet die Lösung für dich aus.
-
Ok! Nein Passt schon! Das muss auf keinem Linux Rechner laufen!
Aber die Funktion kannte ich noch nicht!
Nochmal Danke!Gruß
Andi