[c++] Evènement clavier

Résolu/Fermé
Metaphysik - 7 juin 2007 à 15:13
 Metaphysik - 7 juin 2007 à 16:52
Bonjour à tous,

J'ai un programme qui simule des collisions entre des particules dans une enceinte fermée, et qui affiche après chaque pas de temps les caractéristiques de ces particules (vitesse, masse, position, etc) avec une boucle

while( pas_de_temps < 1000) {
. ...
pas_de_temps++;
};

Ce que j'aimerais, c'est de pouvoir mettre ce système en pause (interrompre momentanément la boucle) grace à une touche de clavier (par ex. 'p'), puis reprendre la boucle comme si de rien n'était (toujours en reappuyant sur 'p').

Je pense à une fonction qui réagirait à une certaine touche du clavier et qui ferait "system("pause")", mais je ne sais pas si c'est possible.
Quelqu'un saurait-il comment je pourrais faire?
Merci pour vos suggestions.

2 réponses

fiddy
Messages postés
11067
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 804
7 juin 2007 à 15:33
Salut
Tu peux utiliser la fonction kbhit() qui permet de savoir si une touche est disponible dans le buffer.

while( pas_de_temps < 1000) {
     if(kbhit())
          if (getchar()=='p') 
              while(getchar()!='p');

     pas_de_temps++;
}; 

Ca devrait marcher, après il y aura peut-être des problèmes avec l'utilisation de getchar().
Tiens moi au courant.
Bonne chance
1
Ok ça marche super bien. Pour l'instant le getchar() ne me pose aucun problème, alors je pense que tant que je ne complexifie pas trop cette histoire là, ça devrait continuer à bien aller ; -)

Merci infiniment pour ton aide!
1