prüfen ob eine Tastatureingabe erfolgt ist

Hallo,

ich möchte in C ein Spiel programmieren, weiss aber nicht wie ich die Steuerung realisieren soll. Ich will eine Eingabe auswerten, aber nicht mit getch() auf sie warten, habe schon versucht den STDIN zu löschen und mit sizeof eine Auswertung vorzunehmen, leider ohne Erfolg. Ich hoffe Ihr versteht mein Problem und könnt mir eventuell helfen. Danke im Voraus

MfG Hurby

Hallo hurby

ich möchte in C ein Spiel programmieren, weiss aber nicht wie
ich die Steuerung realisieren soll. Ich will eine Eingabe
auswerten, aber nicht mit getch() auf sie warten, habe schon
versucht den STDIN zu löschen und mit sizeof eine Auswertung
vorzunehmen, leider ohne Erfolg.

„getch()“ und STDIN hört sich ein wenig
nach „Konsole“ oder DOS-Fenster an.

Dafür existiert bei den göngigen Compilern/Umgebungen
ein Interface in die OS-Tastatur-IO-Funktionen:

 kbhit(), 
 \_kbhit(,
 \_\_kbhit() 

oder so je nach Compiler … (#include )
Du würdest also schreiben

 GAME\_LOOP: while (!done) {

 if( kbhit() ) {
 if( getch() == '\x1B' ) 
 done = 1;
 }
 else {
 game\_iteration( n++ );
 }

 }

… oder sowas :wink:

Grüße

CMБ

Hallo hurby

erstmal danke für die Antwort

„getch()“ und STDIN hört sich ein wenig
nach „Konsole“ oder DOS-Fenster an.

nunja, ich mache das ja mit dem TC von Borland, da wird DOS simuliert
also ist das doch gar nicht soweit her.

Dafür existiert bei den gängigen Compilern/Umgebungen
ein Interface in die OS-Tastatur-IO-Funktionen:
kbhit()
_kbhit()
__kbhit()

kannst mir eventuell erklären wie die Funktionen arbeiten,
ich will ja nicht nur anwenden sondern auch verstehen…

Du würdest also schreiben

GAME_LOOP:
while (!done)
{
if( kbhit() )
{
if( getch() == ‚\x1B‘ )
done = 1;
}
else {
game_iteration( n++ );
}
}

… oder sowas :wink:

‚\x1B‘ was bewirkt das, ich schätze \x ist eine Escape-sequenz, und der Rest???

Grüße

CMБ

MfG Hurby

Hallo hurby

Dafür existiert bei den gängigen Compilern/Umgebungen
ein Interface in die OS-Tastatur-IO-Funktionen:
kbhit()
_kbhit()
__kbhit()

kannst mir eventuell erklären wie die Funktionen arbeiten,
ich will ja nicht nur anwenden sondern auch verstehen…

OK, kbhit() ist iirc ein Interface in den DOS-Interrupt 21h,
Funktion 0Bh - (http://www.datasource.de/programmierung/tab16_dosint…)

‚\x1B‘ was bewirkt das, ich schätze \x ist eine
Escape-sequenz, und der Rest???

\x => Hexadezimalcode
\x1B => Zeichen 1B (hex), das ist die Escape-Taste
(http://www.lookuptables.com/)
im Prinzip würde

 #define ESCAPE 27
 ...
 if ( getch() == ESCAPE ) {
 ...

dasselbe bewirken.

Grüße

CMБ

Ich danke Dir, werde es Wochenende gleich ausprobieren…

MfG Hurby