Probleme avec getch() ds une bcle qui teste le tps ...

azerothkeeper Messages postés 6 Date d'inscription lundi 31 mars 2003 Statut Membre Dernière intervention 12 décembre 2003 - 9 oct. 2003 à 20:08
azerothkeeper Messages postés 6 Date d'inscription lundi 31 mars 2003 Statut Membre Dernière intervention 12 décembre 2003 - 11 oct. 2003 à 21:12
d abbord une source simplifiee de mon probleme:

#include
#include <conio.h>
#include <ctime>
using namespace std;

int main()
{
int x;
time_t tps1,tps2;
while(true)//je sais que c est pas beau mais c est pr l exemple:-)
{
tps1=time(NULL);
do
{
tps2=time(NULL);
x=getch();
//tests sur x...
}while(difftime(tps1,tps2)<1);
//traitement
}
return 0;
}

voila dc en fait le do-while doit s arreter apres 1 sec mais le getch attends le prochain char dc si je ne presse aucune touche , le getch peut attendre bien plus d une seconde ... et dc je voulais savoir quels etaient les solutions possibles pr obtenir le resultat voulu.

Merci,++

7 réponses

cs_KaiO Messages postés 19 Date d'inscription jeudi 2 mai 2002 Statut Membre Dernière intervention 10 mai 2007
10 oct. 2003 à 09:48
il te sert a quoi le

x=getch() ??

Pis bon si tu emploi un getch dans ta boucle et bien ça attendra tjrs une entrée clavier donc automatiquement ça bloquera donc je vois pas de solution. A moins une autre fonction que getch. Mais je vois pas a quoi tu l'emploi la :D
0
azerothkeeper Messages postés 6 Date d'inscription lundi 31 mars 2003 Statut Membre Dernière intervention 12 décembre 2003
11 oct. 2003 à 11:19
beh en fait j essaye de faire une espece de "space impact" et dc le getch sert a prendre les touches pr bouger le vaisseau et ttes les seconde je devrai gerer les deplacements des montres et des missiles tt ca ... ici l ex est juste pr montrer le probleme . je ne vois pas quoi utiliser , on m a parle de thread mais ca a l air complique juste pr un ptit jeu je sais pas , si qqn a une idee n importe quoi elle est la bienvenue :p
0
cs_Adeon Messages postés 293 Date d'inscription jeudi 21 août 2003 Statut Membre Dernière intervention 10 avril 2015 2
11 oct. 2003 à 20:11
Donc ton probleme c'est que getch() bloc tou et que tu voudrai que le programme gere ton jeux au lieu d'atendre que tu apuis sur une touche. C'est ca?
parceque si oui j'ai la solution a ton probleme
:big) Adeon 8-)
0
azerothkeeper Messages postés 6 Date d'inscription lundi 31 mars 2003 Statut Membre Dernière intervention 12 décembre 2003
11 oct. 2003 à 20:14
c'est bien ca oui!
0

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

Posez votre question
cs_Adeon Messages postés 293 Date d'inscription jeudi 21 août 2003 Statut Membre Dernière intervention 10 avril 2015 2
11 oct. 2003 à 20:30
He bien, rien de plus simple!
petite demonstration:

for(;;)                  //on rentre dans une boucle infinie
{
while ( !kbhit() )    //ca charabia signifi : tan que l'on appui  
                            //sur aucunne touche alors....
{
// l'ordi gere tes ptits missilles lol
}
touche = getch() //des qu'on appui sur une touche sorti de 
                        //While et enregistrement du numero de la 
                         //touche
// si touche = haut alors .....etc 
}


:big) Adeon 8-)
0
cs_Adeon Messages postés 293 Date d'inscription jeudi 21 août 2003 Statut Membre Dernière intervention 10 avril 2015 2
11 oct. 2003 à 20:30
He bien, rien de plus simple!
petite demonstration:

for(;;)                  //on rentre dans une boucle infinie
{
while ( !kbhit() )    //ca charabia signifi : tan que l'on appui  
                            //sur aucunne touche alors....
{
// l'ordi gere tes ptits missilles lol
}
touche = getch() //des qu'on appui sur une touche sorti de 
                        //While et enregistrement du numero de la 
                         //touche
// si touche = haut alors .....etc 
}


:big) Adeon 8-)
0
azerothkeeper Messages postés 6 Date d'inscription lundi 31 mars 2003 Statut Membre Dernière intervention 12 décembre 2003
11 oct. 2003 à 21:12
ok genial merci
0
Rejoignez-nous