Domanda

heu quindi sto usando le funzioni di Windows sopra indicate che fortunatamente sono per Windows 2000 e oltre, ma nel fare un gioco sulla console ho riscontrato un problema: non appena viene premuto un tasto, la console viene superata il kbhit ( ) funzione non importa se un tasto non viene più premuto ...

C'è un modo per cancellare il buffer della pressione della tastiera in modo da non poter passare Kbhit senza un nuovo thyeypress?

Se è necessario un nuovo download Lib, immagino di poter ... ma spero in un modo standard di Windows!

Grazie!!

È stato utile?

Soluzione

Chi te lo ha detto kbhit() era una funzione di Windows maleformò. kbhit(), getch() e i loro parenti fanno effettivamente parte dei (legami linguistici C per il) MS-DOS API. La loro presenza nelle librerie di runtime per OS/2, Win32 e altri compilatori C/C ++ è semplicemente da essere Un aiuto per il porting per i programmi MS/PC/DR-DOS. La biblioteca li mappa su qualunque cosa nativo Esiste un meccanismo per accedere alla tastiera, se ce n'è uno, e di solito solo nel modo giusto per TUI, non GUI, applicazioni per accedere alla tastiera.

Se stai scrivendo una nuova applicazione TUI, non utilizzare l'API MS-DOS. Usa l'API corretta, nativa, per la piattaforma che stai prendendo di mira, come il API console Win32 o il API console OS/2, o il Interfaccia del terminale generale Posix (tramite ncurses o alcuni di questi).

Quando lo fai, leggerai la loro documentazione e scoprirai come eseguire un "Get" distruttivo dell'input della tastiera dopo aver fatto una "sbirciatina" non distruttiva. O in effetti come scaricare il buffer nella sua interezza se è quello che vuoi fare.

Altri suggerimenti

La scelta ovvia sarebbe FlushConsoleInputBuffer

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top