Partage
  • Partager sur Facebook
  • Partager sur Twitter

Régler le niveau de difficulté

J'ai essayé mais pas moyen de réussir....

Sujet résolu
    22 décembre 2005 à 11:43:35

    Bonjour à tous !

    Après avoir réaliséé le TP de Matéo, j'ai essayé de faire un niveau de difficulté :
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>

    int main ()
    {
        const long MIN = 1;
            long nombreMystere = 0, nombreDonne = 0, nombreDeCoups = 0, choixDifficulte = 0;
            int MAX = 0;
           
            printf("Niveau de difficulte :\n\t1. Facile (1-100)\n\t2. Moyen(1-500)\n\t3. Difficile(1-1000)\n\t4. Tres Difficile(1-5000)\n\n");
            scanf("%ld", &choixDifficulte);
           
            switch (choixDifficulte)
            {
                    case1:
                            MAX = 100;
                            printf("Vous avez choisi que le nombre mystere serait compris entre 1 et 100 !\n\n");
                            break;
                    case2:
                            MAX = 500;
                            printf("Vous avez choisi que le nombre mystere serait compris entre 1 et 500 !\n\n");
                            break;
                    case3:
                            MAX = 1000;
                            printf("Vous avez choisi que le nombre mystere serait compris entre 1 et 1000 !\n\n");
                            break;
                    case4:
                            MAX = 5000;
                            printf("Vous avez choisi que le nombre mystere serait compris entre 1 et 5000 !\n\n");
                            break;
            }
           
            srand(time(NULL));
            nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
           
            while (nombreDonne != nombreMystere)
            {
            printf("Quel est le nombre ? ");
            scanf("%ld", &nombreDonne);
           
            if (nombreDonne < nombreMystere)
                    printf("C'est plus !\n\n");
            else if (nombreDonne > nombreMystere)
                    printf("C'est moins !\n\n");
            else
                    printf("Bravo, vous avez trouve le nombre mystere en %ld coups !!!", nombreDeCoups + 1);
                   
            nombreDeCoups++;
           
            }
           
            return 0;
    }


    Donc il me propose de chosir le niveau, je choisis, mais après il ne m'affiche pas la phrase : "Vous avez choisi que le nombre mystere serait compris entre 1 et MAX !" et en plus, à chaque fois que je tape un nombre il met : "C'est plus !" même quand je tape un nombre plus grand que MAX.

    Merci d'avance de votre aide !
    • Partager sur Facebook
    • Partager sur Twitter
      22 décembre 2005 à 11:56:24

      Bin je pense que c'est parce que tu essaie de redéfinir une constante, alors que c'_est_ une constante ^^

      essaie de faire croire à ton prof que Pi ca faut 4,23
      Il va te rire au nez :p

      Donc j'ai tout simplement passé les deux valeur en long
      pour pouvoir les changer :)

      Ca me donne :

      int vie = 0, max_nbr = 0, difficult = 0;
      long max = 0, min = 0;
      char saisie[20], temp[20];
      do {
          printf("Niveau de difficulte : \n\n  1. Facile (1 & 100) 10 vies\n  2. Moyen (1 & 100) 5 vies\n  3. Kamikaz' (1 & 1000) 10 vies\n\n");
          fflush(stdout);
          fgets(saisie, sizeof saisie, stdin);
          pas_une_lettre = sscanf(saisie, "%[0-9]s", temp);
          sscanf(saisie, "%d", &difficult);
          if (difficult <= 3 && difficult > 0) {
              if (difficult == 1) {
                  vie = 10;
                  max = 100;
                  max_nbr = 100;
                  min = 1;
              } else if(difficult == 2) {
                  vie = 5;
                  max = 100;
                  max_nbr = 100;
                  min = 1;
              } else if(difficult == 3) {
                  vie = 10;
                  max = 1000;
                  max_nbr = 1000;
                  min = 1;
              } else {
                  pas_une_lettre = 0;       
              }
          } else {
              pas_une_lettre = 0;
          }
      } while (pas_une_lettre != 1);


      T'inquiette si tu comprend pas 2-3 fonctions , c'est juste pour filtrer ce qu'il l'utilisateur met pour pas se retrouver avec des bug :)

      Edit : Arf, j'avais pas vu que tu l'avais passé en int ^^

      Mais je sais pas, moi ca marche...

      Et je pense que les majuscule sont réservée pour les constante donc essaie de mettre max en minuscule

      Et si tu t'étonne que si tu met plus au que 100 il te dit juste "C'est moins", c'est parce que tu ne met pas de limite.

      je mettrais autour un while() {} que tant que les chiffres donnés ne sont pas > 1 et < max alors il doit le réintroduire :)
      • Partager sur Facebook
      • Partager sur Twitter
        22 décembre 2005 à 12:47:18

        Tout ce que tu as dit ne figure pas dans les cours de Matéo je crois donc je pense que quand il dit qu'on peut faire cela, on doit utiliser ce qu'on sait déjà faire or ici je ne comprends pas ton code :(
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          22 décembre 2005 à 14:03:35

          Salut Simon_le_zeus ,
          rajoute un
          default:
          a ton switch ,sa seras deja mieux ;)
          Et met
          nombreDeCoups++;
          a chaque conditions pour qu'il les pernd en compte .

          De plus , ta principal erreu vient d'ici :
          switch (choixDifficulte)
                  {
                          case 1 :
                                  MAX = 100;
                                  printf("Vous avez choisi que le nombre mystere serait compris entre 1 et 100 !\n\n");
                                  break;
                          case 2:
                                  MAX = 500;
                                  printf("Vous avez choisi que le nombre mystere serait compris entre 1 et 500 !\n\n");
                                  break;
                          case 3:
                                  MAX = 1000;
                                  printf("Vous avez choisi que le nombre mystere serait compris entre 1 et 1000 !\n\n");
                                  break;
                          case 4:
                                  MAX = 5000;
                                  printf("Vous avez choisi que le nombre mystere serait compris entre 1 et 5000 !\n\n");
                                  break;
                  }


          Tu as oublier de separer le chiffre de case ;)
          En esperant t'avoir aider .
          Hybrix
          • Partager sur Facebook
          • Partager sur Twitter
            22 décembre 2005 à 14:54:54

            Merci mais en fait quand j'ai remplacé case1 par default ça marche ;)
            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              22 décembre 2005 à 15:00:55

              Si ton probleme est resolu met un OK
              • Partager sur Facebook
              • Partager sur Twitter

              Régler le niveau de difficulté

              × 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.
              • Editeur
              • Markdown