Bon je vais essayer de vous montrer mon problème
C'est pour un petit jeu d'athlé sans grande prétention
Voici le code :
Code :
- #include <stdio.h>
- #include <stdlib.h>
- #include <coniocouleur.h>
- #include <conio.h>
- int main (void)
- {
- //Initialisation des variables
- char bouger;
- //Coordonnées pour l'affichage
- int xcoureur=2;
- int ycoureur=3;
- //Compteur pour le while
- int cpt=1;
- //COmpteur pour le kbhit
- int cptkbhit=0;
- int cptbouger=0;
- printf ("A VOS MARQUES ....." );
- _sleep(1500);
- printf ("PRET ..." );
- _sleep (1500);
- printf ("PARTEZ" );
- cptkbhit=1;
- while (cpt==1)
- {
- //MOuvement du coureur
- //Appuyer sur "!" et sur ":" pour courir
- if ((kbhit())&&(cptkbhit==1))
- {
- bouger=getch();
- if ((bouger=='!')&&(cptbouger==0)&(xcoureur<66))
- {
- xcoureur=xcoureur+1;
- cptbouger=1;
- }
- if ((bouger==':')&&(cptbouger==1)&&(xcoureur<66))
- {
- xcoureur=xcoureur+1;
- cptbouger=0;
- }
- }
- //Affichage du coureur
- textcolor (WHITE);
- gotoxy (xcoureur,ycoureur);
- printf ("#" );
- textcolor (0);
- gotoxy (xcoureur-1,ycoureur);
- printf (" " );
- }
- getch();
- return 0;
- }
|
Le problème est que l'on peut démarrer avant que le départ soit donné
Le compteur cptkbhit est pourtant initialisé à 0 et ne prend 1 qu'après l'affichage de "Partez"
Est-ce que kbhit() stocke les frappes ? ou est-ce que je rentre vraiment dans la boucle malgré le compteur ?
J'espère avoir été clair ! 