Partage
  • Partager sur Facebook
  • Partager sur Twitter

que pensez-vous de ce code ? plus ou moins

langage C

    30 juillet 2021 à 13:25:31

    bonjour a tous, je suis nouveau en langage C, j'ai vraiment eu quelque difficulte a le faire marcher correctement. je suis ouvert au critique, surtout n'hesitez pas. Merci d'avance

    ps: desole pour les accents ou autres fautes, je suis avec un clavier US (hahahaha).

    voici mon code:

    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    
    int main(int argc, char **argv)
    
    {
    
        int nombreMystere = 0, nombreEntre =0, choixDuNiveaux = 0, nombreDeJoueur = 0, nombreMystereChoisi = 0;
        const int MIN = 1;
        int max = 0;
        int nouvellePartie = 1;
    
        srand(time(NULL));
    
        do // pour commencer la boucle generale
        {
    
            printf("Choissiez le nombre de joueur : 1 joueur ou 2 joueurs\n\n");
            scanf("%d", &nombreDeJoueur);// choix du nombre de joueur
            int coups = 0;
    
    
            switch(nombreDeJoueur)// ceci commence le switch du choix du nombe de joueurs
        {
    
            case 1:// mode 1 joueur
                printf("Choisis un niveau de difficulte:\n\n");
                printf("1. Debutant: choisis un nombre entre 1 et 100\n");
                printf("2. Intermediaire: choisis un nombre entre1 et 200\n");
                printf("3. Veteran: choisis un nombre entre 1 et 300\n");
                printf("4. Expert: choisis un nombre entre 1 et 400\n");
                printf("5. Super Heros: choisis un nombre entre 1 et 500\n");
                scanf("%d", &choixDuNiveaux);
    
                printf("\n\n");
    
    
    
                switch(choixDuNiveaux)
    
                {
                case 1:
                    printf("Tu as choisi le niveau debutant, c'est bien pour commencer \n\n");
                    max = 100;
                    break;
                case 2:
                    printf("Ok, tu as choisi le niveau intermediaire, ca commence a devenir interessant\n\n");
                    max = 200;
                    break;
                case 3:
                    printf("Oh ok, le cela deviens un peu plus amusant avec le niveau Veteran\n\n");
                    max = 300;
                    break;
                case 4:
                    printf("Alors la, tu commence a me plaire avec ce niveau Expert !!!\n\n");
                    max = 400;
                    break;
                case 5:
                    printf("Bon ca ne rigole plus maintenant, tu est en mode Super Heros !!!\n\n");
                    max = 500;
                    break;
                default:
                    printf("Tu as choisi un niveau qui n'existe pas !!\n\n");
                    break;
    
                }while(choixDuNiveaux < 1 || choixDuNiveaux > 5);// fin de boucle de choix de difficult
    
             nombreMystere = (rand()%(max - MIN + 1)) + MIN; // generateur de nombre aleatoire
    
    
                do // debut de la boucle pour trouver le nombre mystere
                {
    
                    printf("please guess the number between %d and %d ?", MIN, max);
                    scanf("%d", &nombreEntre);
                    coups++;
    
                    if(nombreMystere>nombreEntre)
                    printf("it's more\n\n");
    
                    else if(nombreMystere<nombreEntre)
                    printf("it' less\n\n");
    
                    else
                    printf("Well done, you find the mystery number in %d tentatives!!\n\n", coups);
    
    
    
                }while(nombreEntre!=nombreMystere);// fin de la boucle pour trouver nombre mystere
                break;
    
            case 2:// mode 2 joueurs
    
                    printf("Player 1, please choose a number\n");// je demande au premier joueur de choisir un nombre a deviner
                    scanf("%d", &nombreMystereChoisi);
    
                do
                {
                    printf("Player 2, try to find the number of player 1\n");// le 2eme joueur vas essayer de deviner le nombre mystere
                    scanf("%d", &nombreEntre);
                    coups++;
    
                    if(nombreMystereChoisi>nombreEntre)
                    printf("it's more\n\n");
    
                    else if(nombreMystereChoisi<nombreEntre)
                    printf("it's less\n\n");
    
                    else
                    printf("Well done player 2, you find the mystery number in %d tentatives!\n\n", coups);
    
    
            }while(nombreEntre!=nombreMystereChoisi);
            break;// ceci permet de fermer le switch(nombreDeJoueur)
        }
    
        printf("Do you want to try again ?\n");
        printf("Yes = enter 1 \nNo = enter 0\n\n");
        scanf("%d", &nouvellePartie);
        printf ("\n\n");
    
        if(nouvellePartie == 0)
            printf("Thanks for playing with us !!\n\n");
    
    
        }while(nouvellePartie == 1); // pour fermer la boucle generale.
    
        return 0;
    
    }
    
    



    -
    Edité par Romain L. 30 juillet 2021 à 13:30:55

    • Partager sur Facebook
    • Partager sur Twitter
      30 juillet 2021 à 14:22:42

      Bonjour,

      Où est le do du while (ligne 67) ?

      L'indentation de ton code est à revoir.

      Bonne continuation.

      • Partager sur Facebook
      • Partager sur Twitter
        30 juillet 2021 à 16:39:10

        un truc un peu dérangeant pour l'utilisateur, c'est le mélange français/anglais  ("cool il me parle français, euh attends, pourquoi il me parle anglais maintenant ???")

        et la seule différence entre le mode 1 joueur et 2 joueurs c'est le mode de tirage du nombre mystère (+ une partie du texte), il doit y avoir moyen de factoriser ça (la boucle de jeu est la même (au texte près) on devrait ne l'avoir qu'une seule fois)

        • Partager sur Facebook
        • Partager sur Twitter
          30 juillet 2021 à 18:27:43

          Pourquoi faire un truc compliqué pour ton nombre aléatoire ?

                      nombreMystere = (rand()%(max - MIN + 1)) + MIN;

          Tu pourrais faire simplement :

                      nombreMystere = rand()%max + MIN;





          • Partager sur Facebook
          • Partager sur Twitter
            30 juillet 2021 à 18:44:08

            c'est pour avoir un nombre compris entre min et max de manière générale.

            rand()%max+MIN donne un nombre entre MIN et MIN+max

            • Partager sur Facebook
            • Partager sur Twitter
              30 juillet 2021 à 18:49:27

              Je vais me faire détester par les pro ... Un bon programmeur est fainéant ...
              Ce n'est pas vrai, mais on s'arange pour coder le moins possible et ne pas dédoubler le code.
              Je verrais le jeu dans une fonction à laquelle tu passe le nombre mystère en paramètre.
              Pour la difficulté, j'éviterais personnellement le switch.
              Tu pourrais mettre tes messages dans un tableau:
              char message[5] = {"message 1", "message 2", ... };
              Ça vaut autant pour le menu que pour les réponses.
              les choix pourraient être dans un tableau également:
              tableauChoix[5] = {100, 200, ...};
              Tu fais: max = tableauChoix[choix-1];
              Ce mode pourrait se  trouver dans une fonction qui retourne la valeur de max.
              Quand je l'ai fait, j'ai été plus sadique pour l'utilisateur. Mes choix étaient 100, 1000, 10000, 100000, 1000000 ... et tu ne connais pas le maximum.
              • Partager sur Facebook
              • Partager sur Twitter

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

                30 juillet 2021 à 19:17:13

                @PierrotLeFou: à ce stade du tuto, les fonctions sont encore inconnues. Et je viens de vérifier, les tableaux également.
                • Partager sur Facebook
                • Partager sur Twitter

                On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent

                  30 juillet 2021 à 20:37:48

                  Hmmm, pas facile d'ooptimiser dans ces conditions.
                  Il y a tout de même moyen de s'arranger pour n'avoir qu'une copie du jeu lui-même.
                  si mode == 1 joueur
                   je trouve le max avec le switch
                  sinon
                   c'est l'autre qui me donne le max
                  à partir d'ici, je trouve le nombre mystère avec rand()
                  et je joue la partiet
                  • Partager sur Facebook
                  • Partager sur Twitter

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

                    30 juillet 2021 à 20:43:38

                    umfred a écrit:

                    rand()%max+MIN donne un nombre entre MIN et MIN+max

                    Ah bon, vous êtes bien sûr de ce que vous dites ?

                    • Partager sur Facebook
                    • Partager sur Twitter
                      31 juillet 2021 à 1:47:20

                      > rand()%max+MIN donne un nombre entre MIN et MIN+max
                      rand()%max donne un nombre entre 0 et max
                      0+MIN = MIN
                      max+MIN = ...
                      MIN <= nombre < MIN+max
                      • Partager sur Facebook
                      • Partager sur Twitter

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

                        31 juillet 2021 à 9:45:44

                        umfred a écrit:

                        un truc un peu dérangeant pour l'utilisateur, c'est le mélange français/anglais  ("cool il me parle français, euh attends, pourquoi il me parle anglais maintenant ???")

                        et la seule différence entre le mode 1 joueur et 2 joueurs c'est le mode de tirage du nombre mystère (+ une partie du texte), il doit y avoir moyen de factoriser ça (la boucle de jeu est la même (au texte près) on devrait ne l'avoir qu'une seule fois)

                        oui je sais je suis entrain de changer tous cela. je les fais dans les 2 langues pour tester ma copine qui apprend le francais. 

                        • Partager sur Facebook
                        • Partager sur Twitter
                          31 juillet 2021 à 14:31:31

                          PierrotLeFou a écrit:

                          rand()%max donne un nombre entre 0 et max

                          Je ne pense pas, je dirais plutôt entre 0 et max-1



                          • Partager sur Facebook
                          • Partager sur Twitter
                            31 juillet 2021 à 14:58:21

                            Je me suis mal exprimé.
                            MIN <= nombre < MIN+max  reflète plus ma pensée.
                            • Partager sur Facebook
                            • Partager sur Twitter

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

                              31 juillet 2021 à 19:52:07

                              magma a écrit:

                              Bonjour,

                              Où est le do du while (ligne 67) ?

                              L'indentation de ton code est à revoir.

                              Bonne continuation.

                              @Magma:

                              Oui en effet, je l'ai revu:

                              #include <stdio.h>
                              #include <stdlib.h>
                              #include <time.h>
                              
                              int main(int argc, char **argv)
                              
                              {
                              
                                  int nombreMystere = 0, nombreEntre =0, choixDuNiveaux = 0, nombreDeJoueur = 0, nombreMystereChoisi = 0;
                                  const int MIN = 1;
                                  int max = 0;
                                  int nouvellePartie = 1;
                              
                                  srand(time(NULL));
                              
                                  do // pour commencer la boucle generale
                                  {
                              
                                      printf("Choissiez le nombre de joueur : 1 joueur ou 2 joueurs\n\n");
                                      scanf("%d", &nombreDeJoueur);// choix du nombre de joueur
                                      int coups = 0;
                              
                              
                              
                                      switch(nombreDeJoueur)// ceci commence le switch du choix du nombe de joueurs
                                      {
                              
                                          do
                                          {
                              
                              
                                      case 1:// mode 1 joueur
                                          printf("Choisis un niveau de difficulte:\n\n");
                                          printf("1. Debutant: choisis un nombre entre 1 et 100\n");
                                          printf("2. Intermediaire: choisis un nombre entre1 et 200\n");
                                          printf("3. Veteran: choisis un nombre entre 1 et 300\n");
                                          printf("4. Expert: choisis un nombre entre 1 et 400\n");
                                          printf("5. Super Heros: choisis un nombre entre 1 et 500\n");
                                          scanf("%d", &choixDuNiveaux);
                              
                                          printf("\n\n");
                              
                                          switch(choixDuNiveaux)
                              
                                          {
                                          case 1:
                                              printf("Tu as choisi le niveau debutant, c'est bien pour commencer \n\n");
                                              max = 100;
                                              break;
                                          case 2:
                                              printf("Ok, tu as choisi le niveau intermediaire, ca commence a devenir interessant\n\n");
                                              max = 200;
                                              break;
                                          case 3:
                                              printf("Oh ok, cela deviens un peu plus amusant avec le niveau Veteran\n\n");
                                              max = 300;
                                              break;
                                          case 4:
                                              printf("Alors la, tu commence a me plaire avec ce niveau Expert !!!\n\n");
                                              max = 400;
                                              break;
                                          case 5:
                                              printf("Bon ca ne rigole plus maintenant, tu est en mode Super Heros !!!\n\n");
                                              max = 500;
                                              break;
                                          default:
                                              printf("Tu as choisi un niveau qui n'existe pas !!\n\n");
                                              break;
                              
                                          }
                                          }while(choixDuNiveaux < 1 || choixDuNiveaux > 5);// fin de boucle de choix de difficulte
                              
                                       nombreMystere = (rand()%(max - MIN + 1)) + MIN; // generateur de nombre aleatoire
                              
                              
                                          do // debut de la boucle pour trouver le nombre mystere
                                          {
                              
                                              printf("Choisi un nombre entre %d et %d ", MIN, max);
                                              scanf("%d", &nombreEntre);
                                              coups++;
                              
                                              if(nombreMystere>nombreEntre)
                                              printf("C'est plus !\n\n");
                              
                                              else if(nombreMystere<nombreEntre)
                                              printf("C'est moins !\n\n");
                              
                                              else
                                              printf("Bravo, vous avez trouvez le nombre mystere en %d tentatives!!\n\n", coups);
                              
                              
                              
                                          }while(nombreEntre!=nombreMystere);// fin de la boucle pour trouver nombre mystere
                                          break;
                              
                                      case 2:// mode 2 joueurs
                              
                                              printf("Joueur 1, choisi un nombre\n\n");// je demande au premier joueur de choisir un nombre a deviner
                                              scanf("%d", &nombreMystereChoisi);
                              
                                          do
                                          {
                                              printf("Joueur 2, essaye de trouver le nombre mystere\n");// le 2eme joueur vas essayer de deviner le nombre mystere
                                              scanf("%d", &nombreEntre);
                                              coups++;
                              
                                              if(nombreMystereChoisi>nombreEntre)
                                              printf("C'est plus !\n\n");
                              
                                              else if(nombreMystereChoisi<nombreEntre)
                                              printf("C'est moins !\n\n");
                              
                                              else
                                              printf("Bravo joueur 2, vous avez trouvez le nombre mystere en %d tentatives!\n\n", coups);
                              
                              
                                      }while(nombreEntre!=nombreMystereChoisi);
                                      break;// ceci permet de fermer le switch(nombreDeJoueur)
                                  }
                              
                                  printf("Veux-tu rejouer\n");
                                  printf("Oui = tape 1 \nNon = tape 0\n\n");
                                  scanf("%d", &nouvellePartie);
                                  printf ("\n\n");
                              
                                  if(nouvellePartie == 0)
                                      printf("Merci d'avoir jouer avec nous !!\n\n");
                              
                              
                                  }while(nouvellePartie); // pour fermer la boucle generale.
                              
                                  return 0;
                              
                              }
                              
                              



                              -
                              Edité par Romain L. 31 juillet 2021 à 19:54:33

                              • Partager sur Facebook
                              • Partager sur Twitter
                                31 juillet 2021 à 21:25:23

                                hello,

                                la portion :

                                      switch(nombreDeJoueur) { // ceci commence le switch du choix du nombe de joueurs
                                
                                            do {
                                
                                
                                            case 1:// mode 1 joueur
                                

                                est incorrecte … il ne faut rien mettre entre le switch et le premier case …

                                L'indentation est encore imparfaite (et c'est important de bien indenter). Il existe des outils qui permettent d'indenter correctement comme  astyle. Certains IDE le propose aussi, et une indentation automatique est toujours 'dune grande utilité.

                                Il va falloir garder dans un coin de ton cerveau le fait que programmer (en C ou tout autre langage d'ailleurs) n'est pas uniquement pondre du code. C'est une démarche un peu plus complexe qui va la modélisation, à la production d'un exécutable en passant par des phases de tests (des outils permettent de t'aider), de debug (idem, savoir utiliser un debuger et un memory profiler est indispensable), de documentation, de packaging sans oublier les outils d'aide à l'intégration de bibliothèques tierces et des gestion du projet … mais bon ça c'est pour plus tard.

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  1 août 2021 à 1:58:04

                                  Étant donné qu'on n'a que deux situations, un ou deux joueurs, je pense que ce serait mieux avec un  if
                                  if(un joueur) {
                                   je le fais avec le switch sur la difficulté
                                  } else {
                                   c'est l'autre qui me donne le max
                                  }
                                  tu n'as pas encore corrigé le fait d'avoir écrit le jeu en double.
                                  Une raison pour le faire est que le comportement pourrait être différent avec un ou deux joueurs si tu as un bug pour l'un des deux.
                                  • Partager sur Facebook
                                  • Partager sur Twitter

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

                                    3 août 2021 à 16:08:29

                                    White Crow a écrit:

                                    hello,

                                    la portion :

                                          switch(nombreDeJoueur) { // ceci commence le switch du choix du nombe de joueurs
                                    
                                                do {
                                    
                                    
                                                case 1:// mode 1 joueur
                                    

                                    est incorrecte … il ne faut rien mettre entre le switch et le premier case …

                                    L'indentation est encore imparfaite (et c'est important de bien indenter). Il existe des outils qui permettent d'indenter correctement comme  astyle. Certains IDE le propose aussi, et une indentation automatique est toujours 'dune grande utilité.

                                    Il va falloir garder dans un coin de ton cerveau le fait que programmer (en C ou tout autre langage d'ailleurs) n'est pas uniquement pondre du code. C'est une démarche un peu plus complexe qui va la modélisation, à la production d'un exécutable en passant par des phases de tests (des outils permettent de t'aider), de debug (idem, savoir utiliser un debuger et un memory profiler est indispensable), de documentation, de packaging sans oublier les outils d'aide à l'intégration de bibliothèques tierces et des gestion du projet … mais bon ça c'est pour plus tard.

                                    bon du coup, j'ai revu tous cela. desole mais je n'avais pas appris les fonctions. Voici mon code modifier. 

                                    merci encore pour vos conseil, et desole pour les erreurs, je suis un newbie en coding :)

                                    code modifie:

                                    #include <stdio.h>
                                    #include <stdlib.h>
                                    #include <time.h>
                                    
                                    
                                    int difficulte()
                                    
                                    {
                                        int choix = 0 ;
                                    
                                        while(choix < 1 || choix > 5)
                                        {
                                            printf("Choisis un niveau de difficulte:\n\n");
                                            printf("1. Debutant: choisis un nombre entre 1 et 100\n");
                                            printf("2. Intermediaire: choisis un nombre entre1 et 200\n");
                                            printf("3. Veteran: choisis un nombre entre 1 et 300\n");
                                            printf("4. Expert: choisis un nombre entre 1 et 400\n");
                                            printf("5. Super Heros: choisis un nombre entre 1 et 500\n");
                                            scanf("%d", &choix);
                                    
                                            if(choix < 1 || choix > 5)
                                            {
                                                printf("Tu as choisi un niveau qui n'existe pas, essaye encore !!\n");
                                            }
                                        }return choix;
                                    
                                    }
                                    
                                    
                                    int main(int argc, char **argv)
                                    
                                    {
                                    
                                        int nombreMystere = 0, nombreEntre =0, nombreDeJoueur = 0, nombreMystereChoisi = 0;
                                        const int MIN = 1;
                                        int max = 0;
                                        int nouvellePartie = 1;
                                    
                                        srand(time(NULL));
                                    
                                        do // pour commencer la boucle generale
                                        {
                                    
                                            printf("Choissiez le nombre de joueur : 1 joueur ou 2 joueurs\n\n");
                                            scanf("%d", &nombreDeJoueur);// choix du nombre de joueur
                                            int coups = 0;
                                    
                                            if (nombreDeJoueur == 1)
                                    
                                            {
                                                switch(difficulte()) 
                                    
                                                {
                                                case 1:
                                                    printf("Tu as choisi le niveau debutant, c'est bien pour commencer \n\n");
                                                    max = 100;
                                                    break;
                                                case 2:
                                                    printf("Ok, tu as choisi le niveau intermediaire, ca commence a devenir interessant\n\n");
                                                    max = 200;
                                                    break;
                                                case 3:
                                                    printf("Oh ok, cela deviens un peu plus amusant avec le niveau Veteran\n\n");
                                                    max = 300;
                                                    break;
                                                case 4:
                                                    printf("Alors la, tu commence a me plaire avec ce niveau Expert !!!\n\n");
                                                    max = 400;
                                                    break;
                                                case 5:
                                                    printf("Bon ca ne rigole plus maintenant, tu est en mode Super Heros !!!\n\n");
                                                    max = 500;
                                                    break;
                                                default:
                                                    printf("Tu as choisi un niveau qui n'existe pas, essaye encore !!\n\n");
                                                    break;
                                    
                                                }
                                    
                                             nombreMystere = (rand()%(max - MIN + 1)) + MIN; // generateur de nombre aleatoire
                                    
                                    
                                                do // debut de la boucle pour trouver le nombre mystere
                                                {
                                    
                                                    printf("Choisi un nombre entre %d et %d\n", MIN, max);
                                                    scanf("%d", &nombreEntre);
                                                    coups++;
                                    
                                                    if(nombreMystere>nombreEntre)
                                                    printf("C'est plus !\n\n");
                                    
                                                    else if(nombreMystere<nombreEntre)
                                                    printf("C'est moins !\n\n");
                                    
                                                    else
                                                    printf("Bravo, vous avez trouvez le nombre mystere en %d tentatives!!\n\n", coups);
                                    
                                    
                                    
                                                }while(nombreEntre!=nombreMystere);// fin de la boucle pour trouver nombre mystere
                                    
                                            }
                                                else if (nombreDeJoueur == 2)
                                    
                                                {
                                    
                                                    printf("Joueur 1, choisi un nombre\n\n");// je demande au premier joueur de choisir un nombre a deviner
                                                    scanf("%d", &nombreMystereChoisi);
                                    
                                                    do
                                                    {
                                                    printf("Joueur 2, essaye de trouver le nombre mystere\n");// le 2eme joueur vas essayer de deviner le nombre mystere
                                                    scanf("%d", &nombreEntre);
                                                    coups++;
                                    
                                                    if(nombreMystereChoisi>nombreEntre)
                                                    printf("C'est plus !\n\n");
                                    
                                                    else if(nombreMystereChoisi<nombreEntre)
                                                    printf("C'est moins !\n\n");
                                    
                                                    else
                                                    printf("Bravo joueur 2, vous avez trouvez le nombre mystere en %d tentatives!\n\n", coups);
                                    
                                    
                                                    }while(nombreEntre!=nombreMystereChoisi);
                                    
                                                }
                                    
                                    
                                    
                                        printf("Veux-tu rejouer\n");
                                        printf("Oui = tape 1 \nNon = tape 0\n\n");
                                        scanf("%d", &nouvellePartie);
                                        printf ("\n\n");
                                    
                                        if(nouvellePartie == 0)
                                            printf("Merci d'avoir jouer avec nous !!\n\n");
                                    
                                    
                                        }while(nouvellePartie); 
                                    
                                        return 0;
                                    
                                    }
                                    
                                    



                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      3 août 2021 à 17:25:43

                                      Maintenant que tu connais les fonctions ...
                                      Ne pourrais-tu pas placer dans la fonction difficulte() ce qu'il faut pour obtenir la valeur de  max ? (le switch)
                                      Tu pourrais faire une fonction qui demande la valeur de max à l'autre joueur.
                                      Et finalement une fonction pour le jeu lui-même.
                                      Tu verras ce que ça donne. Le code de ton main sera grandement simplifié.
                                      Dis-nous si tu as vu les tableaux. On pourrait éliminer le switch pour trouver max.
                                      On pourrait également simplifier l'affichage de ton menu et les réponses avec des tableaux de chaînes.
                                      • Partager sur Facebook
                                      • Partager sur Twitter

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

                                        3 août 2021 à 18:47:12

                                        je vais essayer mais la tu m'as perdu un peu hahahahaha.

                                        je reviens vers toi.

                                        merci beaucoup pour tes conseils.

                                        -
                                        Edité par Romain L. 3 août 2021 à 18:47:56

                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          4 août 2021 à 2:53:46

                                          Pour ne pas t'embêter avec les messages personnalisés, mets des messages généraux dans le jeu.
                                          Quand tu demandes au joueur 2 d'entrer le max pour le joueur 1, tu pourrais avoir le message suivant à la fin:
                                          « Joueur 2, veuillez laisser la place au joueur 1 »
                                          Tu devrais pouvoir appeler la fonction qui fait le jeu une seule fois après que max a  été soit évalué ou donné par l'autre.
                                          De la même façon, le nombre mystère pourrait n'être calculé qu'une fois.
                                          Si tu ne sais pas qu'on peut passer une expression en paramêtre, je te l'apprend ...
                                          int nombreMystere = rand() % (max-MIN+1) + MIN;
                                          faireJeu(nombreMystere);
                                          ou bien:
                                          faireJeu(rand() % (max-MIN+1) + MIN);
                                          Tu sauves une variable ...
                                          • Partager sur Facebook
                                          • Partager sur Twitter

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

                                            30 septembre 2021 à 21:20:52

                                            et si dans le mode joueur je tape 3 

                                            on aura un problem ?!

                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              30 septembre 2021 à 22:52:19

                                              Bakugo a écrit:

                                              et si dans le mode joueur je tape 3 

                                              on aura un problème ?!


                                              Non, on arrivera immédiatement ligne 133 (d'accord, l'indentation laisse à désirer)

                                              -
                                              Edité par edgarjacobs 30 septembre 2021 à 23:04:57

                                              • Partager sur Facebook
                                              • Partager sur Twitter

                                              On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent

                                                1 octobre 2021 à 1:45:55

                                                On peut remplacer le test si le nombre est 2 par un simple else.
                                                Si c'est tout sauf 1, c'est comme 2.
                                                • Partager sur Facebook
                                                • Partager sur Twitter

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

                                                  5 octobre 2021 à 12:06:08

                                                  Salut, j'arrive apres la bataille, mais un truc pas mal c'est de mettre des acolade pour tes if/else meme s'il n'y a q'une ligne derriere, ainsi

                                                   if(nouvellePartie == 0)
                                                          printf("Merci d'avoir jouer avec nous !!\n\n");

                                                  devient

                                                  if(nouvellePartie == 0)
                                                  {
                                                      printf("Merci d'avoir jouer avec nous !!\n\n");
                                                  }

                                                  si jamais tu veux rajouter une ligne dans le if par la suite tu n'oubliera pas les accolade comme ça, de plus c'est un peu plus lisible.

                                                  idem pour le case, et indente les switch case aussi :

                                                  switch(...)
                                                  {
                                                  case 1:
                                                     ...
                                                  case 2:
                                                     ...
                                                  }
                                                  

                                                  passe ça en :

                                                  switch(...)
                                                  {
                                                      case 1:
                                                      {
                                                          ...
                                                      }
                                                      case 2:
                                                      {
                                                          ...
                                                      }
                                                  }
                                                  

                                                  si tu veux t'amuser a gerer les langues tu peux le faire simplement :

                                                  const char *lang[2][4] = {
                                                      {
                                                          "texte 1 en Français\n",
                                                          "texte 2 en Français\n",
                                                          "texte 3 en Français\n",
                                                          "var %d en Français\n"
                                                      },
                                                      {
                                                          "text 1 in English\n",
                                                          "text 2 in English\n",
                                                          "text 3 in English\n",
                                                          "var %d in English\n"
                                                      }
                                                  };
                                                  
                                                  // section en anglais
                                                  printf( lang[1][0] );
                                                  printf( lang[1][3], 12 );
                                                  
                                                  // partie en Français
                                                  printf( lang[0][0] );
                                                  printf( lang[0][3], 12 );
                                                  

                                                  evidement l'utilisation d'index nomé serait mieux

                                                  enum
                                                  {
                                                          FRENCH=0,
                                                          ENGLISH,
                                                          NB_LANGS
                                                  };
                                                  
                                                  int main ( void )
                                                  {
                                                          const char *lang[NB_LANGS][4] = {
                                                                  [FRENCH]={
                                                                          "texte 1 en Français\n",
                                                                          "texte 2 en Français\n",
                                                                          "texte 3 en Français\n",
                                                                          "var %d en Français\n"
                                                                  },
                                                                  [ENGLISH]={
                                                                          "text 1 in English\n",
                                                                          "text 2 in English\n",
                                                                          "text 3 in English\n",
                                                                          "var %d in English\n" 
                                                                  }
                                                          };
                                                  
                                                          // section en anglais
                                                          printf(lang[ENGLISH][0]);
                                                          printf(lang[ENGLISH][3], 12);
                                                  
                                                          // partie en Français
                                                          printf(lang[FRENCH][0]);
                                                          printf(lang[FRENCH][3], 12);
                                                          return 0;
                                                  }





                                                  • Partager sur Facebook
                                                  • Partager sur Twitter

                                                  la connaissance est une chose qui ne nous appauvrit pas quand on la partage.

                                                  Mon GitHub

                                                    5 octobre 2021 à 12:35:08

                                                    Voir plus haut : dans le cours en question, cet exercice tombe (bêtement) avant les fonctions et les tableaux. Sans parler des enumerations, et des booleens qui n'existent pas.

                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                      5 octobre 2021 à 15:35:10

                                                      On m'a déjà fait la même remarque. On devrait placer l'exercice plus loin dans le cours.
                                                      On pourrait remplacer les menus par des tableaux de chaînes et éliminer le switch facilement pour ce genre d'exercice.
                                                      Il reste tout de même facile de n'avoir qu'une copie du jeu.
                                                      S'il y avait une erreur dans une des versions du jeu et pas dans l'autre, la confusion pourrait être plus grande pour un débutant.

                                                      @ox223252: on aurait pu aller plus loin en ne donnant pas les dimensions des tableaux de chaînes et utiliser sizeof(tableau) / sizeof(tableau[0])

                                                      mais cela non plus, on ne le voit pas au début.

                                                      -
                                                      Edité par PierrotLeFou 5 octobre 2021 à 15:45:03

                                                      • Partager sur Facebook
                                                      • Partager sur Twitter

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

                                                        5 octobre 2021 à 21:28:50

                                                        Les participants à ce forum déclinent toute responsabilité par rapport à ce cours.

                                                        Caveat emptor, qu'ils disaient.

                                                        • Partager sur Facebook
                                                        • Partager sur Twitter
                                                          7 octobre 2021 à 11:00:13

                                                          bien d'accord que l'exercice est pas au bon endroit, mais j'avais oublié :D

                                                          • Partager sur Facebook
                                                          • Partager sur Twitter

                                                          la connaissance est une chose qui ne nous appauvrit pas quand on la partage.

                                                          Mon GitHub

                                                            7 octobre 2021 à 11:58:44

                                                            Le plus grave me semble être le manque de fonctions.

                                                            Une fonction, c'est un moyen de matérialiser une action. En separant le fait

                                                            • La définir à part
                                                            • L'appeler (*)

                                                            Avec les fonctions, on se demande comment écrire une boucle qui répète  l'action faire_une_partie().

                                                            Sans les fonctions,  le debutant cherche quelles instructions inserer (et où) dans son  code pour "revenir" au début (ou à peu pres). Ça le pousse à penser en terme de branchements ( Si la réponse est oui,  je retourne au debut), pour peu qu'il aie entendu parler de goto, il se precipite dessus.

                                                            (*) éventuellement depuis plusieurs endroits pour réutiliser, mais au début c'est moins important que le "simple" fait d'identifier clairement une suite d'opérations qui a un but précis.

                                                            -
                                                            Edité par michelbillaud 7 octobre 2021 à 12:06:33

                                                            • Partager sur Facebook
                                                            • Partager sur Twitter

                                                            que pensez-vous de ce code ? plus ou moins

                                                            × 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