PDA

Visualizza la versione completa : [C o C Assembler] Premere tasto senza bloccare l'esecuzione del programma


steave67
20-10-2012, 20:46
Salve a tutti.
Ho bisogno di una qualche funzione che mi acquisisce un carattere da tastiera senza bloccarmi l'esecuzione del programma. Cioè in pratica che va a leggere dal buffer di tastiera se c'è qualcosa che però non mi blocchi tutto, quindi se c'è lo legge mentre se non c'è va avanti. Una sorta di kbhit() della conio però che mi faccia riconoscere il carattere.
Devo farlo in C, al limite in C Assembler. Quest'ultimo lo conosco pochissimo, giusto le primissime basi niente di più.
C'è un modo per farlo?
Su Internet ho provato a cercare ma non sono riuscito a trovare niente che lo me lo permetta in C.

Grazie a tutti in anticipo.

MItaly
20-10-2012, 21:07
Su che piattaforma lavori?

oregon
20-10-2012, 23:52
Perché la kbhit non va?

steave67
21-10-2012, 09:58
Originariamente inviato da oregon
Perché la kbhit non va?
La kbhit non mi permette di riconoscere il tasto premuto ma restituisce solo 1 o 0 nel caso venga premuto un tasto oppure no.

Lavoro su Windows con il DevC++.
Purtroppo è un lavoro che devo fare per la scuola (ho 16 anni, l'account con cui scrivo è di mio padre) e dovendo usare la gotoxy della conio2.h non posso spostarmi sotto Linux... Sono costretto ad usare winzozz.

torn24
21-10-2012, 11:24
Non so se è una cavolata o meno , dipende anche da cosa deve fare effettivamente il
tuo programma :)

se usi la funzione getch() all'interno di un thread , che legga di continuo i caratteri premuti
e modifichi una variabile char globale , non risolveresti ?

oregon
21-10-2012, 11:47
Originariamente inviato da steave67
La kbhit non mi permette di riconoscere il tasto premuto ma restituisce solo 1 o 0 nel caso venga premuto un tasto oppure no.

Appunto. E se riconosci la pressione del tasto con la kbhit, la fai seguire da una getch() per ottenere il tasto. La kbhit si usa sempre in congiunzione con la getch ...

steave67
21-10-2012, 13:54
Originariamente inviato da torn24
Non so se è una cavolata o meno , dipende anche da cosa deve fare effettivamente il
tuo programma :)

se usi la funzione getch() all'interno di un thread , che legga di continuo i caratteri premuti
e modifichi una variabile char globale , non risolveresti ?
Voglio fare una specie di snake perciò mi serve riconoscere se l'utente non inserisce nessun tasto di direzione in modo da farlo andare per la sua strada senza subire variazioni. E' un po' complesso da fare ma questo è l'unico limite imposto dal C che ho trovato.


Originariamente inviato da oregon
Appunto. E se riconosci la pressione del tasto con la kbhit, la fai seguire da una getch() per ottenere il tasto. La kbhit si usa sempre in congiunzione con la getch ...
Proverò e ti farò sapere ;)

EDIT: Grazie! Era proprio quello che volevo fare :yuppi:

Loading