Partage
  • Partager sur Facebook
  • Partager sur Twitter

Mes ameliorations sur le plus ou moins (TP1)

    22 décembre 2005 à 23:08:10

    bonjour

    j'ai lu le tutorial du mateo21 sur le plus ou moins et j'ai fait les ameliorations que mateo21 a proposé plus l'effacage de l'ecran

    voila le code :


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

    int main(int argc, char *argv[])
    {
       
        char debut = 0, niveau = 0, joueurs = 0;
       
        void intro(void)
    {
             printf("---Bienvenue dans Plus ou Moins---\n");
             printf("-----Jeu realise par Geoff-sk8-----\n");
             printf("----------------------------------\n");
    }
    void difficulte(void)
    {
         printf("Choisissez le niveau de difficulte : \n");
        printf("Tapez 1 pour le niveau 1 (de 1 a 100)\n");
        printf("Tapez 2 pour le niveau 2 (de 1 a 1000)\n");
        printf("Tapez 3 pour le niveau 3 (de 1 a 10000)\n");
        printf("Votre choix : ");
        scanf("%ld", &niveau);
    }
       
       
        while (debut == 0)
        {
        long nombreMystere = 0, nombre_util = 0, nombre_coups = 0, dernier_nombre = 10001, plus_moins = 0;
        system("CLS");
        intro();
        printf("Choisissez le nombre de joueurs : \n");
        printf("Tapez 1 pour 1 joueur\n");
        printf("Tapez 2 pour 2 joueurs\n");
        printf("Votre choix : ");
        scanf("%ld", &joueurs);
        if (joueurs == 1)
        {
        system("CLS");
        intro();
        difficulte();
        if (niveau == 1)
        {
                   long MAX = 100, MIN = 1;
                   srand(time(NULL));
                   nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
                   }
        else if (niveau == 2)
        {
             long MAX = 1000, MIN = 1;
             srand(time(NULL));
             nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
        }
        else
        {
            long MAX = 10000, MIN = 1;
            srand(time(NULL));
            nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
        }
    do
        {
                      system("CLS");
                      intro();
                      if (dernier_nombre != 10001)
                      {
                                         printf("Votre dernier nombre tape qui est : %ld est ", dernier_nombre);
                                         if (plus_moins == 1)
                                         {
                                                        printf("inferieur ");
                                                        }
                                         else
                                         {
                                                        printf("superieur ");
                                                        }
                                         printf("au nombre mystere\n");
                                         }                             
              printf("Quel est le nombre ? ");
              scanf("%ld", &nombre_util);
              dernier_nombre = nombre_util;
             
              if (nombre_util < nombreMystere)
              {
                              printf("C'est plus !\n\n");
                              nombre_coups++;
                              system("PAUSE");
                              plus_moins = 1;
                              }
              else if (nombre_util > nombreMystere)
              {
                                   printf("C'est moins !\n\n");
                                   nombre_coups++;
                                   system("PAUSE");
                                   plus_moins = 0;
                                   }
             
              else
              {
                                   nombre_coups++;
                              printf("Bravo, vous avez trouve le nombre mystere en %ld ", nombre_coups);
                              if (nombre_coups == 1)
                              {
                                               printf("coup\n");
                                               }
                              else
                              {
                                               printf("coups\n");
                                               }
                              }
               
              }while (nombreMystere != nombre_util);
        }
       
        else if (joueurs == 2)
        {
        system("CLS");
        intro();
        difficulte();
        if (niveau == 1)
        {
        do
        {
                   system("CLS");
                   intro();
                   printf("Joueur 1 : Tapez le nombre mystere (de 1 a 100) : \n");
                   printf("Votre nombre : \n");
                   scanf("%ld", &nombreMystere);
                   }while (nombreMystere > 100 || nombreMystere < 1);
                   }
        else if (niveau == 2)
        {
        do
        {
                        system("CLS");
                   intro();
                   printf("Joueur 1 : Tapez le nombre mystere (de 1 a 1000) : \n");
                   printf("Votre nombre : \n");
                   scanf("%ld", &nombreMystere);
                   }while (nombreMystere > 1000 || nombreMystere < 1);
        }
        else
        {
        do
        {
                   system("CLS");
                   intro();
                   printf("Joueur 1 : Tapez le nombre mystere (de 1 a 10000) : \n");
                   printf("Votre nombre : \n");
                   scanf("%ld", &nombreMystere);
                   }while (nombreMystere > 10000 || nombreMystere < 1);
        }
             do
        {
                      system("CLS");
                      intro();
                      if (dernier_nombre != 10001)
                      {
                                         printf("Votre dernier nombre tape qui est : %ld est ", dernier_nombre);
                                         if (plus_moins == 1)
                                         {
                                                        printf("inferieur ");
                                                        }
                                         else
                                         {
                                                        printf("superieur ");
                                                        }
                                         printf("au nombre mystere\n");
                                         }                             
              printf("Quel est le nombre ? ");
              scanf("%ld", &nombre_util);
              dernier_nombre = nombre_util;
             
              if (nombre_util < nombreMystere)
              {
                              printf("C'est plus !\n\n");
                              nombre_coups++;
                              system("PAUSE");
                              plus_moins = 1;
                              }
              else if (nombre_util > nombreMystere)
              {
                                   printf("C'est moins !\n\n");
                                   nombre_coups++;
                                   system("PAUSE");
                                   plus_moins = 0;
                                   }
             
              else
              {
                                   nombre_coups++;
                              printf("Bravo, vous avez trouve le nombre mystere en %ld ", nombre_coups);
                              if (nombre_coups == 1)
                              {
                                               printf("coup\n");
                                               }
                              else
                              {
                                               printf("coups\n");
                                               }
                              }
             }while (nombreMystere != nombre_util);
             }
        printf("Tapez 1 pour fermer le jeu ou 0 pour faire une autre partie\n");
        printf("Votre choix : ");
        scanf("%ld", &debut);
        }
       
      return 0;
    }


    merci de me dire ce que vous en pensez et des conseils pour l'ameliorer
    • Partager sur Facebook
    • Partager sur Twitter
      23 décembre 2005 à 0:13:44

      Bonsoir,

      Je vais t'avouer directement que je n'ai pas lu ton code jusqu'à la fin, parce qu'il n'y a aucun commentaire et qu'il me parait trop long et trop compliqué ...
      Déjà, si tu veux créer des fonctions, fais-le, mais en dehors de ta fonction main :
      // include, etc

      // Ici, on déclare à l'avance deux fonctions qu'on définira un peu plus bas
      // En fait, ces fonctions DOIVENT être définies AVANT la fonction main ...
      // Alors, soit tu les déclare et les codes AVANT la fonction main,
      // soit tu les déclare AVANT et les codes APRES la fonction main ... Comme suit :
      void intro();
      void difficulte();

      void main()
      {
         // Code du programme ...
         // Appel aux fonctions :
         intro();
         difficulte();
      }

      void intro()
      {
         // Texte d'intro
      }

      void difficulte()
      {
         // Menu des difficultés
      }

      Voilà qui me semble déjà mieux ...

      Pour le reste, si tu relis un peu, que tu fais un plan sur papier, je suis sûr que tu peux réduire de 20% la taille de ton code !

      Sur ce, bonne soirée !
      • Partager sur Facebook
      • Partager sur Twitter
        23 décembre 2005 à 9:27:18

        on est pas censer avoir vu les fonction encore ;)
        • Partager sur Facebook
        • Partager sur Twitter
          23 décembre 2005 à 10:06:55

          Et alors ? Il faut encourager les initiatives !

          Remarques :
          - tu peux faire renvoyer directement sa valeur à la fonction difficulte(), ce qui te permettrait d'écrire directement :
          if(difficulte() == 1)

          - tu peux permettre au joueur de choisir précisemment la valeur maximal du nombre mystère au lieu de choisir parmi 3 niveaux, ce qui t'éviterait d'écrire 3 fois l'initialisation du nombre mystère.
          - il est inutile d'effacer la console pour ensuite se fatiguer à retenir le dernier nombre affiché et s'il était supérieur ou inférieur au nombre mystère, mais bon c'est un choix d'esthétique après...
          - tu peux imaginer un système de score

          Voilà de quoi t'occuper un bon moment !
          • Partager sur Facebook
          • Partager sur Twitter

          Mes ameliorations sur le plus ou moins (TP1)

          × 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