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.
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()
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
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...
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Partager