Partage
  • Partager sur Facebook
  • Partager sur Twitter

Premier TP

un problème en voulant y mettre des fonctions :(

    1 mars 2006 à 19:16:38

    Bonjour, voilà je faisait le premier Tp que Matéo nous propose et j'avais réussi a obtenir un jeu fonctionnant sans bug, pour la suite j'ai essayer de rajouter les fonctions pour le menu de difficultés et le menu de joueur et là sa bloque, donc voilà le code :

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

    int menuJoueur (int nombreJoueur)
    {
         int nombreJoueur = 0;
         do //menu nombre joueur
         {
              printf(" Voulez vous jouer tout seul ou a deux ?\n");
              printf("            1  Un joueur               \n");
              printf("            2 Deux joueurs             \n");
              scanf(" %d", &nombreJoueur);
              system("cls");
         }while (nombreJoueur<1 || nombreJoueur>2);
         
         return nombreJoueur;
    }

    int menuDiff ()
    {
         int choixDiff = 0;
         do  //menu difficulté
         {
              printf("    Veuillez choisir votre niveau de difficulte   \n");
              printf("                                                  \n",186,186);
              printf(" 1     Facile : Nombre compris entre 1 et 100     \n",186,186);
              printf(" 2 Intermediaire : Nombre compris entre 1 et 1000 \n",186,186);
              printf(" 3  Difficile : Nombre compris entre 1 et 10000   \n",186,186);
              printf(" 4     Personnaliser : Tu choisis les limites     \n",186,186);
              scanf("%d", &choixDiff);
              system("cls");
         }while (choixDiff < 1 || choixDiff > 4);
         
         return choixDiff;
    }
                   
    int main(int argc, char* argv[])
    {
        //initialisation des variables et constantes
         long nombreMystere = 1, nombreEntre = 1, nombreMax = 100, nombreMin = 1, nombreCoups = 0;
         int continuerPartie = 1;
     
       
         printf("================================================================================");
         printf("Bienvenu dans le jeu du Plus ou Moins, le but de ce jeu est de trouver le nombre Mystere.\n");
         printf("================================================================================\n\n");
     
         while (continuerPartie == 1)
         {       
              if (menuJoueur(nombreJoueur == 1)) //mode 1 joueur
              {                   
                   printf("Mode 1 joueur\n\n");
                               
                   switch (menuDiff()) // choix de la difficulté, variation du nombreMax
                   {
                        case 1 :
                                printf("Vous avez choisis Facile");
                                nombreMax = 100;
                                break;
                       
                        case 2 :
                                printf("Vous avez choisis Intermediaire");
                                nombreMax = 1000;
                                break;
           
                        case 3 :
                                printf("Vous avez choisis Difficile");
                                nombreMax = 10000;
                                break;
                                 
                        case 4 :
                                do
                                {
                                     printf("Vous avez choisis Personnaliser\n");
                                     printf("Quelle est la limite minimale ?");
                                     scanf("%d", &nombreMin);
                                     printf("Quelle est la limite maximale ?");
                                     scanf("%d", &nombreMax);
                                }while (nombreMax < nombreMin);
                                break;
                                         
                   }
                       
                  nombreCoups = 0 ;
                  //génération aléatoire du nombre
                  srand(time(NULL));
                  nombreMystere = (rand() % (nombreMax - nombreMin + 1)) + nombreMin;
               
                  do    //La boucle demande au joueur de mettre un nombre et se répete tant que nombreEntre est différent de nombreMystere
                  {
                       //demander le nombreEntre + augmenter le nombreCoups de 1 à chaque fois
                       printf("\n");
                       printf("Quel est le nombre ?");
                       scanf("%d", &nombreEntre);
                       nombreCoups ++ ;
           
                                // Comparer les nombres
         
                       if (nombreEntre > nombreMax || nombreEntre < nombreMin)
                       printf("Ton nombre est en dehors des limites, il faut reflechir, cela te coute un coup !!\n\n");
           
                       else if (nombreMystere > nombreEntre)
                       printf("C'est plus !! \n\n")
                       
                       else if (nombreMystere < nombreEntre)
                       printf("C'est moins !! \n\n");
                       
                       else
                       printf("Bravo, vous avez trouve le nombre Mystere en %d coups!!\n\n", nombreCoups );
           
                               
                  }while (nombreMystere != nombreEntre);    //fin de la boucle

              printf("Voulez vous refaire une partie?\n");
              printf("\t1 : Oui \n");
              printf("\t0 : Non \n");
              scanf("%d", &continuerPartie);
              system("cls");
           }   
           
              else //mode deux joueurs
              {
                   nombreCoups = 0; //initialisation du nombreCoups
           
                   do
                   {
                       printf("Mode 2 joueurs\n\n");
                       printf("Joueur 1. Veuillez entrez le nombre a chercher :");
                       scanf("%d", &nombreMystere);
                       printf("\nQuelle est la limite minimale de la recherche? :");
                       scanf("%d", &nombreMin);
                       printf("\nQuelle est la limite maximale de la recherche? :");
                       scanf("%d", &nombreMax);
                       system("cls");
                   }while (nombreMin > nombreMystere || nombreMystere > nombreMax);
           
                  do
                  {     
                       printf("\nJoueur 2. Veuiller saisir un nombre entre %d et %d:", nombreMin, nombreMax);
                       scanf("%d", &nombreEntre);                     
                       nombreCoups ++;
                   
                       // Comparer les nombres
                                       
                       if (nombreEntre > nombreMax || nombreEntre < nombreMin)
                       printf("Ton nombre est en dehors des limites, il faut reflechir, cela te coute un coup !!\n\n");
                               
                       else if (nombreMystere > nombreEntre)
                       printf("C'est plus !! \n\n")
           
                       else if (nombreMystere < nombreEntre)
                       printf("C'est moins !! \n\n");
           
                       else
                       printf("Bravo, vous avez trouve le nombre Mystere en %d coups!!\n\n", nombreCoups);
                                   
                  }while (nombreMystere != nombreEntre); //fin de la boucle
           
                   printf("Voulez vous refaire une partie?\n");
                   printf("\t1 : Oui \n");
                   printf("\t0 : Non \n");
                   scanf("%d",&continuerPartie);
                   system("cls");
              }
         }
    return 0;
    }


    La ligne là je ne suis vraiment pas sûr :
    if (menuJoueur(nombreJoueur == 1)) //mode 1 joueur


    Si en même temps vous avez des idées d'amélioration sur le code je suis preneur (pour lindentation j'ai pas trop fait gaffe car j'ai dus modifier un peu le code a cause des fonctions, par core eu le temps de revoir ça)
    • Partager sur Facebook
    • Partager sur Twitter
      1 mars 2006 à 19:25:59

      if (menuJoueur(nombreJoueur)==1)
      • Partager sur Facebook
      • Partager sur Twitter
        1 mars 2006 à 19:32:33

        c'est quoi une indentation ???
        • Partager sur Facebook
        • Partager sur Twitter
          1 mars 2006 à 19:33:01

          J'ai modifier, mais j'ai un probleme au niveau de ces lignes :

          int menuJoueur (int nombreJoueur)
          {
               int nombreJoueur = 0;
               do //menu nombre joueur


          Dev c++ me met comme erreur :

          Citation : dev c++

          'nombreJoueur' redeclared as different kind of symbol



          EDIT : l'indentation, si je ne me trompe pas, c'est le fait d'aérer ton code, de le rendre compréhensible facilement, en faisant des blocs, des espaces etc...

          Edit 2 : c'est bon j'ai trouvé.
          Comme cela sa fonctionne:

          int menuJoueur ()
          {
               int nombreJoueur = 0;
               do //menu nombre joueur


          Puis plus loin

          if (menuJoueur() == 1) //mode 1 joueur
          • Partager sur Facebook
          • Partager sur Twitter
            1 mars 2006 à 22:54:59

            Oui mais non, parce que là le programme ne sait pas le nombre de joueurs si je ne m'abuse.

            A mon sens la solution était donc de laisser le prototype tel quel et d'enlever simplement la ligne :

            int nombreJoueur = 0;


            ... puisqu'elle est inutile et fais planter à la compilation...
            • Partager sur Facebook
            • Partager sur Twitter
              1 mars 2006 à 22:57:11

              bah apperement mon programme fontionne très bien avec la modif que j'ai faites plus haut. C'est bizarre.

              Je vais essayer de modifier comme tu me dis.
              • Partager sur Facebook
              • Partager sur Twitter

              Premier TP

              × 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