Partage
  • Partager sur Facebook
  • Partager sur Twitter

TP Plus ou moin Besoin de Corretion?

    20 février 2020 à 14:21:25

    Bonjour, je vous présente mon Plus ou moins

    Avec comme features:

    -Mode IA ou 2 joueurs

    -Mode de difficulté différentes

    Je début soyez pas trop dure ^^

      1 #include <stdio.h>
      2 #include <stdlib.h>
      3 #include <time.h>
      4 
      5 
      6 int main (int argc, char** argv )
      7 {
      8         //editer mes variable ici//////////////////////////////////////////
      9         int nombrejoueur = 0;
     10         int nombreMystere = 0, nombreEntre = 0;
     11         int MAX = 0, MIN = 0;
     12         int compteur = 0;
     13         int rejouer = 1;
     14         int difficulte = 0;
     15         int mode = 0;
     16 
     17 
     18         // Menu du jeux
     19         printf("\n============================\n");
     20         printf("\nBienvenue dans plus ou moins\n");
     21         printf("\n============================\n");
     22 
     23         while (rejouer == 1)
     24         {
     25 
     26                 //Menu Choix du mode
     27 
     28                 printf("\nMode VS IA\n*Tape 1\nMode PVP\n*Tape 2\n");
     29                 scanf("%d", &mode);
     30 
     31                 switch (mode)
     32                 {
     33                         case 1:
     34                                 printf("Vous avez Choisi Vs IA\n\n");
     35                                 break;
     36 
     37                         case 2:
     38                                 printf("Vous avez choisi PvP\n\n");
     39                                 break;
     40 
     41                         default:
     42                                 printf("Vous avez choisi le mode par default Vs IA\n\n");
     43                                 mode = 1;
     44 
     45                 }
     46 
     47                 if (mode == 1)
     48                 {
     49                         //choix de la dificulté//
     50 
     51                         printf("\n*Selectionne ta dificulté:*\n");
     52                         printf("\n1.Facile\n");
     53                         printf("\n2.Intermediaire\n");
     54                         printf("\n3.dificile\n");
     55                         scanf("%d", &difficulte);
     56 
     57                         switch (difficulte)
     58                         {
     59                                 case 1:
     60                                         MAX = 10;
     61                                         break;
     62                                 case 2:
     63                                         MAX = 100;
     64                                         break;
     65                                 case 3:
     66                                         MAX = 1000;
     67                                         break;
     68                                 default:
     69                                         printf("par default\n\n");
     70                                         MAX = 10;
     71 
     72                         }
     73 
     74                         //Initialisation du Nombre Mystere
     75                         srand(time(NULL));
     76                         nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
     77 
     78 
     79                         printf("\n\n**Choisi un nombre entre 0 et %d\n", MAX);
     80 
     81                         // Boucle du Nombre Mystere
     82 
     83                         while (nombreMystere != nombreEntre)
     84                         {
     85                                 compteur = compteur+1;
     86                                 scanf("%d", &nombreEntre);
     87 
     88 
     89                                 if (nombreEntre > nombreMystere)
     90                                 {
     91                                         printf("\n**C'est moins,\n**Choisi un nouveaux nombre:\n");
     92                                 }
     93 
     94 
     95                                 if (nombreEntre < nombreMystere)
     96                                 {
     97                                         printf("\n**C'est plus,\n**Choisi un nouveaux nombre:\n");
     98                                 }
     99 
    100                         }
    101                 }
    102 
    103                 if (mode == 2)// Mode 2 joueurs
    104                 {
    105 
    106 
    107                         printf("\nJoureur 1 Choisi un Nombre entre 1 et 1000\n\n");
    108                         scanf("%d", &nombrejoueur);
    109 
    110                     while (nombrejoueur > 1000)// Boucle pour empécher le troll ou le plantage 
    111                     {
    112                             printf("\nBanane c'est entre 1 et 1000\n");
    113                             scanf("%d", &nombrejoueur);
    114                     }
    115 
    116                         printf("\nJoueur 2 trouvre le nombre Mystère! entre 1 et 1000\n\n");
    117                         while (nombrejoueur != nombreEntre)//Boucle du nombre Mystere
    118                         {
    119                                 compteur = compteur+1;
    120                                 scanf("%d", &nombreEntre);
    121 
    122 
    123                                 if (nombreEntre > nombrejoueur)
    124                                 {
    125                                         printf("\n**C'est moins,\n**Choisi un nouveaux nombre:\n");
    126                                 }
    127 
    128 
    129                                 if (nombreEntre < nombrejoueur)
    130                                 {
    131                                         printf("\n**C'est plus,\n**Choisi un nouveaux nombre:\n");
    132                                 }
    133 
    134                         }
    135                 }
    136 
    137 
    138                 // Message de fin + Restart
    139                 printf("\n\n====BRAVO Tu as Gagné====\n\nEn %d coups\n\n", compteur);
    140                 compteur = 0;
    141                 printf("tu veux rejoué?\n-Oui Tape 1\n-Non Tape 0\nAlors? :...");
    142                 scanf("%d", &rejouer);
     

    Il manque le "Return 0;" car j'ai pas réusssi a tout copier d'un coup mais mon code fonctionne ;)



    • Partager sur Facebook
    • Partager sur Twitter
      20 février 2020 à 19:17:53

      Salut,

      globalement je ne vois pas de choses qui empêcherait ton programme de fonctionner, mais si tu veux j'ai quelques propositions d'amélioration :

      - Quand tu demandes un choix à l'utilisateur, comme par exemple le mode de jeu, je te proposes d'utiliser des boucles do... while pour supprimer le choix par défaut et l'obliger à choisir une des options que tu lui proposes.

      - Ligne 95 et ligne 129 tu peux mettre des else if à la place des if et ligne 103 tu peux mettre un else si tu mets des boucles comme j'ai proposé avant ou un else if si tu n'en mets pas. Ce n'est qu'un détail mais ça fera lire une condition en moins à ton programme.

      - Pourquoi mettre une variable MIN si elle vaut forcément 0?

      - Cette fois c'est juste du gain de temps pour toi, à la place de compteur = compteur + 1, tu peux mettre compteur++ 

      - Ligne 110, bonne initiative mais tu as oublié le cas où on entre un nombre négatif

      Voilà, je pense avoir dit tout ce que j'ai vu !

      ps : petit chipotage, ligne 107 et 116, il y a des fautes de frappe :p

      • Partager sur Facebook
      • Partager sur Twitter
        20 février 2020 à 19:25:00

        bonjour,

        bien joué, les suggestions de Buschiix sont perinentes, pour ma part je rajouterais juste que en guise "d'entrainement", tu pourrais découper ton code en plusieurs fonctions, c'est une bonne habitude à prendre, par exemple une fonction qui s'occupe d'afficher le message de lancement du jeu, une fonction qui demande la difficulté, une fonction qui contient le coeur du jeu, etc...

        • Partager sur Facebook
        • Partager sur Twitter
          21 février 2020 à 19:00:09

          Merci pour vos réponsse :)

          Je vais voir pour améliorer tout ça, mais je début j'ai encore un peut de mal ^^

          Mais j'avais une question, a la ligne 95 tu me dit de mettre des else if mais pourquoi ? if n'est pas juste ??

          je comprend pas se genre de nuance

          -
          Edité par BaptisteDx 21 février 2020 à 19:33:19

          • Partager sur Facebook
          • Partager sur Twitter
            24 février 2020 à 6:59:20

            En gros, quand tu utilises un if, ton programme va vérifié si la condition est vraie ou fausse.

            Si la condition est fausse, il va regarder s'il y a un else (ou else if), si oui il va regarder si sa condition est vraie ou fausse, s'il n'y en a pas il va juste continuer à lire le programme.

            Et du coup, si la première condition, le 'if', est vraie, il ne va juste pas lire les else if ou/et else qui suivent.

            Dans ton cas, quoi qu'il arrive, il va lire les deux if, donc quoi qu'il arrive il va lire au moins deux conditions. Mais si tu mets un else if, dès le moment ou la première condition sera vrai, il ne lira pas la deuxième.

            Après le changement va être extrêmement minime, tu ne verras pas de différence en terme de temps d'exécution, mais si un jour il te viens l'envie de faire une boucle qui s'exécute 1 million de fois avec des conditions à l'intérieur, ça fera la différence.

            • Partager sur Facebook
            • Partager sur Twitter
              24 février 2020 à 7:12:01

              BaptisteDx a écrit:

              Je vais voir pour améliorer tout ça, mais je début j'ai encore un peut de mal ^^

              C'est pour ça qu'il faut un peu se forcer au départ

              • Partager sur Facebook
              • Partager sur Twitter
                27 février 2020 à 16:16:04

                Bonjhour je reviens vers vous, je suis entrain de rajouter des fonction et vue que jsuis pas doué ahaha

                beh ma fonction choixmode fonctionne enfin plus ou moins XD

                elle demande bien le choix au joueur, mais une fois le choix de l'utilisateur pris en compte elle saute tout le jeux et affiche bravo tu a gagné....

                j'ai besoin d'aide <3

                ci dessous mon main.c et ma fonction .h

                #include <stdio.h>
                #include <stdlib.h>
                #include <time.h>
                #include "Menu.h"
                #include "difficulte.h"
                #include "mode.h"
                int main (int argc, char** argv )
                {
                        //editer mes variable ici//////////////////////////////////////////
                        int nombrejoueur = 0;
                        int nombreMystere = 0, nombreEntre = 0;
                        int MAX = 0, MIN = 0;
                        int compteur = 0;
                        int rejouer = 1;
                        int difficulte = 0;
                        // int mode = 0;
                        int choix = 0;
                
                        Menu(); // Fonction affichage Menu
                
                        while (rejouer == 1)
                        {
                                //Menu Choix du mode
                
                                choixmode(choix);
                                // mode = choix;
                
                
                                /*        switch (mode)
                                          {
                                          case 1:
                                          printf("Vous avez Choisi Vs IA\n\n");
                                          break;
                
                                          case 2:
                                          printf("Vous avez choisi PvP\n\n");
                                          break;
                
                                          default:
                                          printf("Vous avez choisi le mode par default Vs IA\n\n");
                                          mode = 1;*/
                
                                if (choix == 1)
                                {
                                        //choix de la dificulté//
                
                                        printf("\n*Selectionne ta dificulté:*\n");
                                        printf("\n1.Facile\n");
                                        printf("\n2.Intermediaire\n");
                                        printf("\n3.dificile\n");
                                        scanf("%d", &difficulte);
                
                                        switch (difficulte)
                                        {
                                                case 1:
                                                        MAX = 10;
                                                        break;
                                                case 2:
                                                        MAX = 100;
                                                        break;
                                                case 3:
                                                        MAX = 1000;
                                                        break;
                                                default:
                                                        printf("par default\n\n");
                                                        MAX = 10;
                
                                        }
                
                                        //Initialisation du Nombre Mystere
                                        srand(time(NULL));
                                        nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
                
                
                                        printf("\n\n**Choisi un nombre entre 0 et %d\n", MAX);
                
                                        // Boucle du Nombre Mystere
                
                                        while (nombreMystere != nombreEntre)
                                        {
                                                compteur = compteur+1;
                                                scanf("%d", &nombreEntre);
                
                
                                                if (nombreEntre > nombreMystere)
                                                {
                                                        printf("\n**C'est moins,\n**Choisi un nouveaux nombre:\n");
                                                }
                
                
                                                else if (nombreEntre < nombreMystere)
                                                {
                                                        printf("\n**C'est plus,\n**Choisi un nouveaux nombre:\n");
                                                }
                
                                        }
                                }
                
                                if (choix == 2)// Mode 2 joueurs
                                {
                
                
                                        printf("\nJoureur 1 Choisi un Nombre entre 1 et 1000\n\n");
                                        scanf("%d", &nombrejoueur);
                
                                        while (nombrejoueur > 1000)// Boucle pour empécher le troll ou le plantage 
                                        {
                                                printf("\nBanane c'est entre 1 et 1000\n");
                                                scanf("%d", &nombrejoueur);
                                        }
                
                                        printf("\nJoueur 2 trouvre le nombre Mystère! entre 1 et 1000\n\n");
                                        while (nombrejoueur != nombreEntre)//Boucle du nombre Mystere
                                        {
                                                compteur = compteur+1;
                                                scanf("%d", &nombreEntre);
                
                
                                                if (nombreEntre > nombrejoueur)
                                                {
                                                        printf("\n**C'est moins,\n**Choisi un nouveaux nombre:\n");
                                                }
                
                
                                                else if(nombreEntre < nombrejoueur)
                                                {
                                                        printf("\n**C'est plus,\n**Choisi un nouveaux nombre:\n");
                                                }
                
                                        }
                                }
                
                
                                // Message de fin + Restart
                                printf("\n\n====BRAVO Tu as Gagné====\n\nEn %d coups\n\n", compteur);
                                compteur = 0;
                                printf("tu veux rejoué?\n-Oui Tape 1\n-Non Tape 0\nAlors? :...");
                                scanf("%d", &rejouer);
                
                
                                if (rejouer == 1);
                                printf("\nc'est reparti\n\n");
                
                        }
                
                        return 0;
                        }
                int choixmode(int choix){
                
                
                
                                //Menu Choix du mode
                
                             printf("\nMode VS IA\n*Tape 1\nMode PVP\n*Tape 2\n");
                             scanf("%d", &choix);
                
                                switch (choix)
                                {
                                        case 1:
                                                printf("Vous avez Choisi Vs IA\n\n");
                                                break;
                
                                        case 2:
                                                printf("Vous avez choisi PvP\n\n");
                                                break;
                
                                        default:
                                                printf("Vous avez choisi le mode par default Vs IA\n\n");
                                                choix = 1;
                                }
                
                return choix;
                }





                • Partager sur Facebook
                • Partager sur Twitter
                  27 février 2020 à 16:48:04

                  Ca n'a pas de sens de passer choix en paramètres.

                  1) la fonction ne faitrrien de la valeur du paramètre qu'elle reçoit

                  2) le choix est retourné par la fonction.

                  Donc dans la fonction, ça devrait être une variable locale (qui peut s'appeler choix ou autrement, c'est sans importance. Sauf que choix, c'est mieux comme nom que truc ou machin. Enfin "mode" ça serait mieux, parce que ce qui est retourné est un mode  [*] )

                  int choix_mode(void) {
                     int mode;
                     ...
                     return mode;
                  }
                  


                  [*] trouver un bon nom pour une variable, c'est important, et difficile au début.

                  -
                  Edité par michelbillaud 27 février 2020 à 16:49:47

                  • Partager sur Facebook
                  • Partager sur Twitter
                    27 février 2020 à 17:19:21

                    c'est logique mais quand je fait ta méthode il me dit que mode n'est pas déclaré sur le main.c ??

                    je doit déclaré la variable mode dans le .c et .h ??

                    UPDATE: j'ai déclaré dans le main.c et .h du coup ça marche mais j'ai tjrs le probleme apres le choix de l'utilisateur il vas a la fin du programe ..

                    une idée??

                    -
                    Edité par BaptisteDx 27 février 2020 à 17:33:50

                    • Partager sur Facebook
                    • Partager sur Twitter
                      27 février 2020 à 17:45:55

                      int mode;
                      
                      // ...
                      
                      mode = choix_mode();
                      
                      // ...
                      • Partager sur Facebook
                      • Partager sur Twitter
                        27 février 2020 à 18:04:19

                        Salut,
                        J'ai l'impression que tu ne sais pas que les noms de variable s'appliquent seulement dans la fonction où elles sont définies.
                        (sauf pour les variables globales, et encore)
                        Tu peux avoir une variable 'mode' dans ta fonction et assigner la valeur de retour dans une variable 'choix' dans ton main.
                        • Partager sur Facebook
                        • Partager sur Twitter

                        Le Tout est souvent plus grand que la somme de ses parties.

                          28 février 2020 à 0:13:00

                          ça fait que 2 semaine que je code je suis un débutant j'ai pas encore tout saisie j'en suis désolé  ^^

                          c'est pas évidant quoi ..

                          mais je lache rien, je rentre a 42 le 9 mars c'est pour cela que je suis se cours

                          • Partager sur Facebook
                          • Partager sur Twitter
                            28 février 2020 à 0:22:17

                            tu devrais faire ce qu'à écrit magma : au lieu de juste executer ta fonction choixmode() tu devrais faire choix = choimode();
                            sans cela ta fonction renvoie une valeur que tu n'utilise pas, le choix dans ton main reste a zero et donc tu ne rentres dans aucun de tes if, du coup paf ca va directement à la fin.
                            • Partager sur Facebook
                            • Partager sur Twitter
                              28 février 2020 à 1:10:32

                              Merci pour vos réponsses, ça fonctionne :) je viens de comprendre toute la logique enfin jusqu'aux prochaines sueur ahahah ^^

                              main.c

                              #include <stdio.h>
                              #include <stdlib.h>
                              #include <time.h>
                              #include "Menu.h"
                              #include "difficulte.h"
                              #include "mode.h"
                              int main (int argc, char** argv )
                              {
                                      //editer mes variable ici//////////////////////////////////////////
                                      int nombrejoueur = 0;
                                      int nombreMystere = 0, nombreEntre = 0;
                                      int MAX = 0, MIN = 0;
                                      int compteur = 0;
                                      int rejouer = 1;
                                      int difficulte = 0;
                                      int mode = 0;
                                      Menu(); // Fonction affichage Menu
                                      
                                      while (rejouer == 1)
                                      {
                                             mode = choixmode();
                                              if (mode == 1)
                                              {      
                                                      //choix de la dificulté//
                              
                                                      printf("\n*Selectionne ta dificulté:*\n");
                                                      printf("\n1.Facile\n");
                                                      printf("\n2.Intermediaire\n");
                                                      printf("\n3.dificile\n");
                                                      scanf("%d", &difficulte);
                              
                                                      switch (difficulte)
                                                      {
                                                              case 1:
                                                                      MAX = 10;
                                                                      break;
                                                              case 2:
                                                                      MAX = 100;
                                                                      break;
                                                              case 3:
                                                                      MAX = 1000;
                                                                      break;
                                                              default:
                                                                      printf("par default\n\n");
                                                                      MAX = 10;
                              
                                                      }
                              
                                                      //Initialisation du Nombre Mystere
                                                      srand(time(NULL));
                                                      nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
                              
                              
                                                      printf("\n\n**Choisi un nombre entre 0 et %d\n", MAX);
                              
                                                      // Boucle du Nombre Mystere
                              
                                                      while (nombreMystere != nombreEntre)
                                                      {
                                                              compteur = compteur+1;
                                                              scanf("%d", &nombreEntre);
                              
                              
                                                              if (nombreEntre > nombreMystere)
                                                              {
                                                                      printf("\n**C'est moins,\n**Choisi un nouveaux nombre:\n");
                                                              }
                              
                              
                                                              else if (nombreEntre < nombreMystere)
                                                              {
                                                                      printf("\n**C'est plus,\n**Choisi un nouveaux nombre:\n");
                                                              }
                              
                                                      }
                                              }
                              
                                              if (mode  == 2)// Mode 2 joueurs
                                              {
                              
                              
                                                      printf("\nJoureur 1 Choisi un Nombre entre 1 et 1000\n\n");
                                                      scanf("%d", &nombrejoueur);
                              
                                                      while (nombrejoueur > 1000)// Boucle pour empécher le troll ou le plantage 
                                                      {
                                                              printf("\nBanane c'est entre 1 et 1000\n");
                                                              scanf("%d", &nombrejoueur);
                                                      }
                              
                                                      printf("\nJoueur 2 trouvre le nombre Mystère! entre 1 et 1000\n\n");
                                                      while (nombrejoueur != nombreEntre)//Boucle du nombre Mystere
                                                      {
                                                              compteur = compteur+1;
                                                              scanf("%d", &nombreEntre);
                              
                              
                                                              if (nombreEntre > nombrejoueur)
                                                              {
                                                                      printf("\n**C'est moins,\n**Choisi un nouveaux nombre:\n");
                                                              }
                              
                              
                                                              else if(nombreEntre < nombrejoueur)
                                                              {
                                                                      printf("\n**C'est plus,\n**Choisi un nouveaux nombre:\n");
                                                              }
                              
                                                      }
                                              }
                              
                                              // Message de fin + Restart
                                              printf("\n\n====BRAVO Tu as Gagné====\n\nEn %d coups\n\n", compteur);
                                              compteur = 0;
                                              printf("tu veux rejoué?\n-Oui Tape 1\n-Non Tape 0\nAlors? :...");
                                              scanf("%d", &rejouer);
                              
                              
                                              if (rejouer == 1);
                                              printf("\nc'est reparti\n\n");
                              
                                      }
                              
                                      return 0;
                                      }

                              fonction.h

                              int choixmode(){
                              
                              int mode = 0;
                              
                                              //Menu Choix du mode
                              
                                           printf("\nMode VS IA\n*Tape 1\nMode PVP\n*Tape 2\n");
                                           scanf("%d", &mode);
                              
                                              switch (mode)
                                              {
                                                      case 1:
                                                              printf("Vous avez Choisi Vs IA\n\n");
                                                              break;
                              
                                                      case 2:
                                                              printf("Vous avez choisi PvP\n\n");
                                                              break;
                              
                                                      default:
                                                              printf("Vous avez choisi le mode par default Vs IA\n\n");
                                                              mode = 1;
                                              }
                              
                              return mode;
                              
                              }



                              -
                              Edité par BaptisteDx 28 février 2020 à 1:12:02

                              • Partager sur Facebook
                              • Partager sur Twitter
                                28 février 2020 à 8:05:35

                                Faut  pas s'inquiéter,  c'est normal de patauger. Au bout d'une dizaine d'années, ça ira un peu mieux.
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  28 février 2020 à 9:56:14

                                  michelbillaud a écrit:

                                  Faut  pas s'inquiéter,  c'est normal de patauger. Au bout d'une dizaine d'années, ça ira un peu mieux.

                                  Jspr ne pas attendre 10 ans avant de devenir une machine du code ahahah :)



                                  • Partager sur Facebook
                                  • Partager sur Twitter

                                  TP Plus ou moin Besoin de Corretion?

                                  × 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