Comment gérer un sleep() et une siasie de touche en même temps?

capunk Messages postés 4 Date d'inscription samedi 6 décembre 2003 Statut Membre Dernière intervention 8 décembre 2003 - 6 déc. 2003 à 17:19
capunk Messages postés 4 Date d'inscription samedi 6 décembre 2003 Statut Membre Dernière intervention 8 décembre 2003 - 6 déc. 2003 à 21:37
bonjour, j'ai un programme a faire dont le but est de simuler le fonctionnement d'une mémoire vive.
Donc mon soucis c'est qu'il faut que je simule aussi la partie temps : j'ai déjà regardé sur le site et apperemment j'ai plusieurs possibilité pour marquer des temps d'arrêt pour simuler les temps d'exécution (sleep() , clock()...).
Cependant j'ai un autre soucis : il faut que l'utilisateur soit capable de rajouter un programme dans la mémoire quand il le souhaite. Or, si celui ci ne rentre aucun programme , celui ci doit continuer de trouner en simulant l'exécution des programmes de la mémoire vive.

Donc ce que je voudrais faire c'est :

-faire des attentes de 2sec (a peu près) pour simuler les cycles du processeurs.
-si l'utilisateur appui sur une touche (pendant ces 2 sec )(0 par exemple) le menu lui permettant de rajouter un programme s'affiche
-si l'utilisateur n'a appuyé sur aucune touche pendant ces 2 sec : je passe au prochain cycle (attente de 2 sec ....)

=> le gros problème que je rencontre c comment, si au bout de 2 secondes d'attente l'utilisateur n'a appuyé sur aucune touche, continuer quand même le programme.

Merci pour votre aide (pour ceux qui arrive a comprendre ce que j'ai écrit ;) ).
A voir également:

5 réponses

cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
6 déc. 2003 à 18:21
ca par exemple?
bool touche=false;
unsigned debut=clock();
while( (clock()-debut<2000) && !kbhit() )
{

}
// on sort de la boucle apres 2sec ou l'appuye d'une touche 
0
capunk Messages postés 4 Date d'inscription samedi 6 décembre 2003 Statut Membre Dernière intervention 8 décembre 2003
6 déc. 2003 à 19:24
Ca ma l'air pas mal!!
Mais peux tu m'expliquer la commande kbhit() stp... :
Est ce qu'elle permet de récupérer la valeur de la touche enfoncée, faut il utiliser un fichier d'entête en particulier pour utiliser cette fonction...

Merci de m'avoir répondu aussi vite .... :)
Merci d'avance a celui qui m'éclairera... ;)
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
6 déc. 2003 à 19:31
eu... c'est conio.h je croi pour kbhit mais si tu est sous devc++ tu pourra pas, t'es sous quel compilo?

kbhit() retourn 1 si une touche est enfoncé, 0 sinon pour recuperer la valeur de la touche enfoncer:

bool touche=false;
char c;
unsigned debut=clock();
while( (clock()-debut<2000) && !touche )
{
if(kbhit()) c=getch();
}
// on sort de la boucle apres 2sec ou l'appuye
// d'une touche et c contient le caracter saisie
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
6 déc. 2003 à 19:32
en fait c'est ca

bool touche=false;
char c;
unsigned debut=clock();
while( (clock()-debut<2000) && !touche )
{
if(kbhit()){ c=getch(); touche=true;}
}
// on sort de la boucle apres 2sec ou l'appuye
// d'une touche et c contient le caracter 
// saisie

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
capunk Messages postés 4 Date d'inscription samedi 6 décembre 2003 Statut Membre Dernière intervention 8 décembre 2003
6 déc. 2003 à 21:37
J'utilise le compilateur fournit de base avec linux (mandrake 9.1).
Je ne connais pas le nom ni la version.
Ca marchera quand même?

Merci encore ! ;)
0
Rejoignez-nous