int main(void) {
srand (time (NULL)); const MIN = 1; long gaming = 0, compteur = 0, nombreMystere, difficult, mode, choix, MAX; char saisie[6], newgame[3]; do { if(gaming != 1) { printf("\n\nPlus +\n"); printf(" - Moins\n\n"); printf("_____________\n\n"); printf(" -=-=-=-=-=-\n"); printf("| MeNu |\n"); printf(" -=-=-=-=-=-\n\n"); printf("[Difficulte] :\n"); printf("1 : Facile (1 - 100)\n"); printf("2 : Moyen (1 - 1000)\n"); printf("3 : Difficile (1 - 10000)\n\n"); do { //fflush (stdin); printf("Votre choix ?\n");
fflush (stdout);
fgets (saisie,sizeof saisie,stdin);
difficult = atol(saisie); } while(difficult != 1 && difficult != 2 && difficult != 3); switch(difficult) { case1 :
MAX = 100; break; case2 :
MAX = 1000; break; case3:
MAX = 10000; break; } printf("Mode :\n"); printf("1 : Mode 1 joueur\n"); printf("2 : Mode 2 joueurs\n\n"); do { //fflush (stdin); printf("Votre choix ?\n");
fflush (stdout);
fgets (saisie,sizeof saisie,stdin);
mode = atol (saisie); } while(mode != 1 && mode != 2); switch(mode) { case1 :
nombreMystere = (rand() % (MAX - MIN + 1)) + MIN; break; case2 : do { //fflush (stdin); printf("Entrer le nombre mystere compris entre 1 et " "%ld :\n",MAX);
fflush (stdout);
fgets (saisie,sizeof saisie,stdin);
nombreMystere = atol (saisie); printf("\n"); } while(!(nombreMystere <= MAX && nombreMystere >= 1)); break; }
gaming = 1; }
compteur++; //fflush (stdin); printf("Cherchez le nombre mystere !\nEntrer un nombre " "de 1 a %ld!\n",MAX);
fflush (stdout);
fgets (saisie,sizeof saisie,stdin);
choix = atol (saisie); if(choix == nombreMystere) { printf("Bravo ! Vous avez trouvez le nombre mystere en %ld " "coups ! C'etait bien %ld !\n\n",compteur,
nombreMystere); do { //fflush (stdin); printf("Veux tu faire une nouvelle partie ? (Oui/Non)\n");
fflush (stdout);
fgets (saisie,4,stdin); printf("\n"); } while(strcmp (saisie,"Oui") != 0 &&
strcmp (saisie,"Non") != 0);
sscanf(saisie, "%s",newgame); if(strcmp (newgame,"Oui") == 0) {
newgame[3] = "Non";
gaming = 0;
difficult = 0;
mode = 0;
compteur = 0;
nombreMystere = 0; } } elseif(choix <= nombreMystere) { printf("C'est plus !\n\n"); } elseif(choix >= nombreMystere) { printf("C'est moins !\n\n"); } } while(choix != nombreMystere); return0; }
Seulement, j'ai quelques petits problèmes, tout d'abord j'ai vu que le scanf c'est mal je l'ai donc remplacé par du fgets, autre problème, j'ai utilisé des fflush (stdin) (commenté dans mon code) ce qui normalement ne doit pas se faire d'après ce que j'ai vu. seulement si je les enlèves, et que je ecris par exmeple à la premiere demande de saisie "aaaaa" (je sais, normalement je dois ecrire un nombre dans mon cas) et bien le printf ("Votre choix ?\n"); s'affichera 3 fois dans ma console :
si je laisse le fflush (stdin), pas de problème...
bref la saisie reste hasardeuse... et j'aimerai la corrigé.
Comment faire pour que la saisie de la difficulté et du mode respecte ce cahier des charges :
- usage de fgets au lieu de scanf
- uniquement saisie d'un seul chiffre (si je tappe 1 ça marche si je tappe 11 ça marche pas si je tappe a1 ça marche pas, si je tappe 1a ça marche pas... bref un truc bien strict là dessus)
- pas de fflush (stdin)
Pour la saisie de la demande de nouvelle partie j'ai le même problème si je tappes "n'importe quoi" le printf se fait plusieur fois sans le fflush... bref faudrait que j'arrive à corriger ça
Je ne sais pas comment m'y prendre et c'est bien pour ça que je fais appel à vous
Qu'en pensez-vous ?
McFox
[C] Plus Moins, ammelioration...
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.