n00b => funktion für tastendruck
-
Hi,
als c-n00b bin ich gerade dabei, mein erstes spiel in c zu machen. allerdings hänge ich schon an einem menü, in welchem der spieler seine charakterwerte festlegen soll:
Ich brauche eine Funktion, die mir angibt, welcher ASCII-Tastencode gerade gedrückt ist (oder ob garnichts gedrückt ist). Sie soll aber den Programmablauf nicht aufhalten, und im Falle das garnichts gedrückt wird, beispielsweise -1 ausgeben.
Sorry für so ne Frage, aber ich hab wirklich nichts gefunden. getch() aus conio.h war schon fast das richtige, aber sie wartet, wenn nichts gedrückt ist.
mfg,
jens
-
conio.h
kbhit()
-
Ob eine Taste gedrückt wurde, kannst du mit der Funktion kbhit() erfragen - wie es ja schon gesagt wurde.
#include <conio.h> if(kbhit()) { //Bla... }
Ich habe mal so nen Mini - Prog geschrieben, das ausgiebt, welchen Code die bestimmten Tasten zurueckgeben. Vielleicht hilft er dir:
void main() { while(1) { int temp; temp=getch(); printf("%d\n",temp); } }
Ist natürlich sehr simpel, aber hat mir am anfang dennoch sehr geholfen
Edit:
Ach ja was willste denn für nen Spiel programmieren? *neugierig ist*
-
hi,
wenn ich nicht allzu dumm bin, dann lieftert kbhit() ob überhaupt eine taste gedrückt wurde oder nicht. dann kann man mit kbhit() ja gucken, ob überhauot was gedrückt wird, und das dann weiter mit getch() abfragen.
thxps: das spiel soll wie Aklabeth werden (falls dus net kennst, "Ultima 0" aus 1980 für Apple2). Gut, direkt mit dem Menü für die Festlegung des Charakters anzufangen, ist nicht das richtige ein Spiel zu beginnen, aber ich hab halt mit C noch so wenig gemacht, da macht mir sogar so ein dummes Menü richtig Schwierigkeiten.
Mfg,
jens
-
Du hast geschrieben, das die Funktion
den Programmablauf nicht aufhalten
soll.
Heißt das Du willst Die Fkt im Hintergrund laufen lassen?
Das wär dann ein Fall für einen Thread. *nicht leicht*
Oder heißt das nur, dass wenn nix gedrückt wird nach einer gewissen Zeit ne -1 zurückgegeben?Du hast recht mit dem kbhit(). Es sagt nur das eine Taste gedrückt wurde. Danach kannst Du aber mit getch() die Taste auslesen.
Ciao
-
Grappa's Hammer schrieb:
hi,
wenn ich nicht allzu dumm bin, dann lieftert kbhit() ob überhaupt eine taste gedrückt wurde oder nicht. dann kann man mit kbhit() ja gucken, ob überhauot was gedrückt wird, und das dann weiter mit getch() abfragen.
thxRichtig.
Würdeswt du aber nur getch machen, dann würde der Programmablauf gestört werden.
Mit einem kbhit() davor, unterbindest du diese Unterbrechung.