[C] Getch pendant 0.5sec

Résolu/Fermé
cs-bilou Messages postés 769 Date d'inscription dimanche 2 décembre 2007 Statut Membre Dernière intervention 24 février 2011 - 23 août 2009 à 18:55
cs-bilou Messages postés 769 Date d'inscription dimanche 2 décembre 2007 Statut Membre Dernière intervention 24 février 2011 - 24 août 2009 à 21:10
Bonjour,
Je suis actuellement en train de faire un PacMan.
Et donc je voudrais que l'on puisse utiliser gatch juste pendant 0.5sec.
Mais je ne vois vraiment pas comment faire :(
Il faut utiliser sleep(500) et getch( je veux utiliser getch car il n'y a pas besoin de confirmer par Entrée.

Si quelqu'un a une idée je suis preneur !!
Merci.

Bilou.

3 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
23 août 2009 à 19:19
Salut,

Utilise _kbhit ( https://www.microsoft.com/en-us/download/details.aspx?id=55984 ).
Cela te permettra de faire ta pause et ne bloquera pas ton programme.

Cdlt
0
cs-bilou Messages postés 769 Date d'inscription dimanche 2 décembre 2007 Statut Membre Dernière intervention 24 février 2011 164
24 août 2009 à 14:30
Super merci.
Alors voilà se que j'ai fait pour avoir un getch juste pendant environ 0.5sec.

#include <conio.h>
#include <stdio.h>

int main(void)
{
    int i = 0;
    long maxI = 50000;
    long touche;
    for (i=0 ; i < maxI ; i++)
    {
        while (kbhit() != 0)
        {
             touche = getch();
             i = maxI++;
        }
    }
    if (touche == 2359208)
    printf("Aucunne touche détectée\n");
    else
    printf("La touche est %c\n", touche);
    system("PAUSE");
}


Voilà merci encore pour ton aide.
Bilou.

0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
24 août 2009 à 21:02
Pas super super ton code.
L'utilisation de clock serait beaucoup mieux :

#include <stdio.h>
#include <conio.h>
#include <time.h>

int main(void)
{
    int c=-1;
    clock_t pause=clock()+0.5*CLOCKS_PER_SEC;
    while(clock()<pause)
        if(_kbhit()!=0){
            c=_getch();
            break;
        }

    if(c!=-1) 
        printf("La touche est : %c\n",c);
    else
        puts("aucune touche détectée");

    _getch(); 
    return 0;
}


Cdlt
0
cs-bilou Messages postés 769 Date d'inscription dimanche 2 décembre 2007 Statut Membre Dernière intervention 24 février 2011 164
24 août 2009 à 21:10
Haa oui merci beaucoup fiddy.
Je vais regardre de plus prêt comment utiliser clock.

Bilou.
0