Bonjour a tous.
J'aimerai savoir comment faire pour prendre en compte l'appui d'une touche du clavier comme avec la fonction getch(); mais sans pour autant arrêter le programme.
Merci.
Version imprimable
Bonjour a tous.
J'aimerai savoir comment faire pour prendre en compte l'appui d'une touche du clavier comme avec la fonction getch(); mais sans pour autant arrêter le programme.
Merci.
kbhit()
Salut,
Aucune solution standard.
Soit une boucle avec kbhit() pour protéger le getch(), mais ça prend 100% du CPU, à moins de mettre une suspension (non standard) comme Sleep(ms) (Windows) ou sleep(s) (POSIX.1).
Soit utiliser les threads et créer un thread pour la saisie (qui peut alors être standard). La fonction d'entrée étant bloquante, les CPU est libéré et le reste peut tourner.
Quel est le but recherché ?
En fait je suis en train de créer un "snake" et comme la fonction getch() arrêtait mon programme, ca ne marchait pas.
Mais avec kbhit() il n'y a plus de souci j'ai réussi à encadrer mon getch() pour le rendre actif seulement quand j'appui sur le clavier.
Mais comme tu le dit sa ralentit beaucoup, donc il faudra que j'essaie en créant un thread. Je vais chercher des explications dessus car je n'ai pas tous compris ^^.
Merci.
Merci mais étant donné que je ne comprend strictement rien de se qui est écrit sur les thread je vais me contenter pour l'instant de rester avec un kbhit() et je verrai plus tard pour optimiser mon programme.
Non.
Si tu as de la chance, c'est peut-être POSIX...
Gabriel Storm : Alors je te conseille de faire comme dans le code d'Emmanuel: Insérer un usleep() ou un Sleep() dans ta boucle (environ 100ms par exemple) pour ne pas bouffer tout le processeur, et accessoirement ne pas avoir un programme trop rapide pour que l'utilisateur puisse réagir...