Partage
  • Partager sur Facebook
  • Partager sur Twitter

Des idées pour mon "Plus ou Moins" ?

Comment l'améliorer ?

    23 décembre 2005 à 12:31:30

    Bonjour tout le monde !

    J'ai enfin fini de réparer mon programme :
    /*************************************************
    *                             * Plus Ou Moins *               *
    *                        * Par Simon-le-zeus *             *
    *                           * 22/12/2005 *                 *
    *                             * premierTP.c  *                *
    *                             ----------------                *
    *              D'après les cours du Site Du Zéro        *
    **************************************************/





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

    int main ()
    {
            /* Création et initialisation des variables, dont une qui sera constante (toujours pareille) */
           
        const long MIN = 1;
            long nombreMystere = 0, nombreDonne = 0, nombreDeCoups = 0, choixDifficulte = 0, nombreJoueurs = 0, choixDesNombres = 0;
            int nombreMinimum = 0, max = 0;
           
            /* Petite introuduction :) */
           
            printf("Bienvenue dans le jeu Plus Ou Moins !\n\nNombre de joueurs :\n\t- 1 joueur\n\t- 2 joueurs\nVotre choix : ");
            scanf("%ld", &nombreJoueurs);
           
            /* Si il choisi de jouer tout seul ... */
           
            if (nombreJoueurs == 1)
            {
                    /* ... il choisi s'il veut jouer avec les nombres par défaut (1 à ...) ou avec ses nombres */
                   
                    printf("Souhaitez-vous :\n\t1. Jouer avec des nombres par defaut ?\n\t2. Jouer avec vos nombres ?\nVotre choix : ");
                    scanf("%ld", &choixDesNombres);
                   
                    switch (choixDesNombres) /* On étudie choixDesNombres pour savoir avec quels nombres il veut jouer */
                    {
                            case 1:
                                    printf("Niveau de difficulte :\n\t1. Facile\n\t2. Moyen\n\t3. Difficile\n\t4. Tres difficile\nVotre choix : ");
                                    scanf("%ld", &choixDifficulte); /* Choix de la difficulté */
                                   
                                    if (choixDifficulte == 1)
                                            max = 100;
                                    if (choixDifficulte == 2)
                                            max = 500;
                                    if (choixDifficulte == 3)
                                            max = 1000;
                                    if (choixDifficulte == 4)
                                            max = 100000;
                                           
                                    srand(time(NULL));
                    nombreMystere = (rand() % (max - MIN + 1)) + MIN; /* Création du nombre aléatoire */
                                   
                                    while (nombreDonne != nombreMystere)
                                    {
                                    printf("Quel est le nombre mystere ? ");
                                    scanf("%ld", &nombreDonne);
                                   
                                    if (nombreDonne < nombreMystere)
                                    {
                                            printf("C'est plus !\n");
                                            nombreDeCoups++;
                                    }
                                                                                   
                                    if (nombreDonne > nombreMystere)
                                    {
                                            printf("C'est moins !\n");
                                            nombreDeCoups++;
                                    }
                                                                                   
                                    if (nombreDonne == nombreMystere)
                                    {
                                            printf("Bravo, vous avez trouve le nombre mystere en %ld essais !\n", nombreDeCoups + 1);
                                            nombreDeCoups++;
                                    }
                                    }
                                   
                                    break;
                           
                            case 2: /* Ici il entre le nombre minimum et le nombre maximum */
                                    printf("Entrez le nombre minimum et le nombre maximum :\n\tNombre minimum : ");
                                    scanf("%ld", &nombreMinimum);
                                    printf("\tNombre maximum : ");
                                    scanf("%ld", &max);
                                   
                                    if (nombreMinimum > max)
                                            printf("Le nombre minimum doit etre inferieur au nombre maximum !\n");
                                    else
                                    {
                                            srand(time(NULL));
                                            nombreMystere = (rand() % (max - nombreMinimum + 1)) + nombreMinimum;
                                           
                                            while (nombreDonne != nombreMystere)
                                            {
                                            printf("Quel est le nombre mystere ? ");
                                            scanf("%ld", &nombreDonne);
                                           
                                            if (nombreDonne < nombreMystere)
                                            {
                                                    printf("C'est plus !\n");
                                                    nombreDeCoups++;
                                            }
                                                                                   
                                            if (nombreDonne > nombreMystere)
                                            {
                                                    printf("C'est moins !\n");
                                                    nombreDeCoups++;
                                            }
                                                                                   
                                            if (nombreDonne == nombreMystere)
                                            {
                                                    printf("Bravo, vous avez trouve le nombre mystere en %ld essais !\n", nombreDeCoups + 1);
                                                    nombreDeCoups++;
                                            }
                                            }
                                    break;
                                   
                            default:
                                    printf("Une erreur s'est produite !\n");
                                    break;
                    }
            }
            }
           
            if (nombreJoueurs == 2) /* Si il veulent jouer à deux, un des deux entre le nombre mystere et l'autre le devine */
            {
                   
                    printf("Que le premier joueur entre le nombre mystere : ");
                    scanf("%ld", &nombreMystere);
                    printf("\n\n\n\n\n\n\n\n\n\n"); /* Pour éviter que le joueur voit le nombre mystère */
                   
                    while (nombreMystere != nombreDonne)
                    {
                    printf("Nombre mystere : ");
                    scanf("%ld", &nombreDonne);
                   
                    if (nombreDonne < nombreMystere)
                            printf("C'est plus !\n");
                    if (nombreDonne > nombreMystere)
                            printf("C'est moins !\n");
                    if (nombreDonne == nombreMystere)
                            printf("Bravo, vous avez trouve le nombre mystere !\n");
                    }
            }
                           
            return 0;
    }


    Et je voulais savoir si vous aviez des idées pour l'améliorer ? Je sais que je peux faire en sorte que le programme s'arrête en fonction du choix de l'utilisateur mais quand j'essaie de faire ça, il redémarre toujours le programme même si le choix et de l'arrêter. Donc si vous avez des idées ou si vous pouviez m'expliquer comment faire pour le redémarrage du programme, n'hésitez pas ! ^^

    • Partager sur Facebook
    • Partager sur Twitter
      23 décembre 2005 à 13:19:56

      Pour le redémarrage, ce que tu avais codé était bon, il suffisait d'indiquer à l'utilisateur de taper 0 pour quitter au lieu de 2, mais le codage était correct...
      • Partager sur Facebook
      • Partager sur Twitter
        23 décembre 2005 à 13:57:57

        Moi, j'ai essayé avec 1 et 2 et ça marchais, à moins que je n'aie pas très bien compris :euh:

        Mais sinon (et c'était le but du message, non ? :p ) tu pourrais faire un système de points qui seraient :
        point = nombreDeCoups / niveau ;
        • Partager sur Facebook
        • Partager sur Twitter
          23 décembre 2005 à 13:59:35

          Illogique : plus le nombre de coups est grand, plus j'ai de points avec ton système !
          • Partager sur Facebook
          • Partager sur Twitter
            23 décembre 2005 à 14:51:12

            Ouais mais le but est d'avoir le moins de point évidemment !

            J'ai quand même assez de logique pour avoir pensé à ça :p

            regarde ce que ça donne (avec mode d'emploi[j'étais super motivé pour en avoir fait un]) :

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

            int main(int argc, char *argv[])
            {
              long choixRecommencer = 1;
              while (choixRecommencer == 1)
              {
               long nombreEntre = 101;
               long nombreMystere = 0;
               long nombreCoups = 0;
               long nbrJoueurs = 1;
               printf("=====Menu=====\n\nA quel mode voulez-vous jouer ?\n\n1. 1 joueur\n2. 2 joueurs\n3. mode d'emploi\n");
               scanf("%ld", &nbrJoueurs);
               if (nbrJoueurs == 1)
               {
                const long MIN = 1;
                 long MAX = 100;
                 long niveau = 1;
                 printf("=====Menu 1 joueur=====\n\nA quel niveau voulez-vous jouez ?\n\n1. niveau 1 (max : 100)\n2. niveau 2 (max : 500)\n3. niveau 3 (max : 1000)\n");
                 scanf ("%ld", &niveau);
                 switch (niveau)
                 {
                        case 1:
                             MAX = 100;
                             break;
                        case 2:
                             MAX = 500;
                             break;
                        case 3:
                             MAX = 1000;
                             break;
                        default:
                             printf("ce niveau n'existe pas, nous vous mettons au niveau 1");
                             break;
                 }
                 printf("\n");
                 srand(time(NULL));
                 nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
                 while (nombreEntre != nombreMystere)
                 {
                     nombreCoups++;
                     printf("Quel est le nombre ? ");
                     scanf("%ld", &nombreEntre);
                     printf("\n");
                     if (nombreEntre < nombreMystere)
                             {
                                            printf("C'est plus !\n\n");
                             }
                     else if (nombreEntre > nombreMystere)
                             {
                                            printf("C'est moins !\n\n");
                             }
                     else
                             {
                                            printf("Bravo, vous avez trouve le nombre mystere en %d coups \n", nombreCoups);
                             }
                 }
                 long score = nombreCoups / niveau;
                 printf("Voici votre score : %d \n", score);
                 printf("\nVoulez-vous rejouer une partie ?\n\n1. Oui\n2. Non\n");
                }
                else if (nbrJoueurs ==2)
                {
                   printf("joueur 1, intruduisez un nombre entre 1 et le maximum convenu avec joueur 2. ");
                   scanf("%ld", &nombreMystere);
                   printf("\n\n*\n\n*\n\n*\n\n*\n\n*\n\n*\n\n*\n\n*\n\n*\n\n*\n\n*\n\n*\n\n*\n\n*\n\n*Joueur 2, a vous de jouer !");
                   while (nombreEntre != nombreMystere)
                   {
                     nombreCoups++;
                     printf("Quel est le nombre ? ");
                     scanf("%ld", &nombreEntre);
                     printf("\n");
                     if (nombreEntre < nombreMystere)
                             {
                                            printf("C'est plus !\n\n");
                             }
                     else if (nombreEntre > nombreMystere)
                             {
                                            printf("C'est moins !\n\n");
                             }
                     else
                             {
                                            printf("Bravo, vous avez trouve le nombre mystere en %d coups \n", nombreCoups);
                             }
                   }
                   printf("\nVoulez-vous rejouer une partie ?\n\n1. Oui\n2. Non\n");
                }
                else if (nbrJoueurs == 3)
                {
                     printf("=====Mode d'emploi=====\n\n1 joueur :\nDans ce jeu, l'ordinateur choisit un nombre au hazard en fonction du niveau choisi. Vous devez ensuite taper un nombre. L'ordinateur vous dira si le nombre mystere est plus grand ou plus petit que le votre. Si il est egal, vous avez gagne ! Apres plusieurs parties, le but est d'avoir totalise le moins de points.\n\n2 joueurs :\nLes 2 joueurs definissent un palier maximum, le premier tape un nombre entre 1 et le palier maximum. Le deuxieme doit ensuite faire comme pour 1 joueur. Apres chaque partie, echangez les roles. Au bout de plusieurs parties, le vainqueur est celui qui a totalise le moins de point.\n");
                     system("pause");
                     printf("\n\nVoulez-vous commencer une partie ?\n\n1. Oui\n2. Non\n");
                }
                else
                {
                  printf("Desole, ce choix n'est pas dans le menu\n\nVoulez-vous retourner au menu ?\n\n1. Oui\n2. Non\n");
                }
              scanf("%ld", &choixRecommencer);
              }
              printf("Au revoir, et a bientot !\n       (c) Pierre Vyncke\n"); /*  ^^ */
              system("PAUSE");     
              return 0;
            }
            • Partager sur Facebook
            • Partager sur Twitter
              23 décembre 2005 à 16:32:39

              Bon déjà, les system("pause"), je les digère pas :p
              Sinon, pour le système de points, j'y ai pensé aussi mais vous pensez qu'il vaut mieux que je fasse :
              score = nombreDeCoups / choixDifficulte;

              ou

              score = max / nombreDecoups; (ce que je fais actuellement) ?

              Sinon, Chanine, qu'entends-tu par "ce que tu avais codé était bon..." ? Quel code ?
              • Partager sur Facebook
              • Partager sur Twitter
                23 décembre 2005 à 16:40:59

                Zut je me suis trompé de personne, autant pour moi !

                Voici ce dont je parlais !
                • Partager sur Facebook
                • Partager sur Twitter
                  23 décembre 2005 à 16:49:18

                  Ok merci mais je m'y perds car j'ai un problème avec les acolades (peut être qu'il y'en a trop ou pas assez) :
                  /*************************************************
                  *                             * Plus Ou Moins *               *
                  *                        * Par Simon-le-zeus *             *
                  *                           * 22/12/2005 *                 *
                  *                             * premierTP.c  *                *
                  *                             ----------------                *
                  *              D'après les cours du Site Du Zéro        *
                  **************************************************/





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

                  int main ()
                  {
                          /* Création et initialisation des variables, dont une qui sera constante (toujours pareille) */
                         
                      const long MIN = 1;
                          long nombreMystere = 0, nombreDonne = 0, nombreDeCoups = 0, choixDifficulte = 0, nombreJoueurs = 0, choixDesNombres = 0, debutPartie = 1, continuerPartie = 1;
                          int nombreMinimum = 0, max = 0, score = 0;
                         
                          /* Petite introuduction :) */
                          do
                          {
                          if (debutPartie == 1)
                          {
                          printf("Bienvenue dans le jeu Plus Ou Moins !\n\nNombre de joueurs :\n\t- 1 joueur\n\t- 2 joueurs\nVotre choix : ");
                          scanf("%ld", &nombreJoueurs);
                         
                          /* Si il choisi de jouer tout seul ... */
                         
                          if (nombreJoueurs == 1)
                          {
                                  /* ... il choisi s'il veut jouer avec les nombres par défaut (1 à ...) ou avec ses nombres */
                                 
                                  printf("Souhaitez-vous :\n\t1. Jouer avec des nombres par defaut ?\n\t2. Jouer avec vos nombres ?\nVotre choix : ");
                                  scanf("%ld", &choixDesNombres);
                                 
                                  switch (choixDesNombres) /* On étudie choixDesNombres pour savoir avec quels nombres il veut jouer */
                                  {
                                          case 1:
                                                  printf("Niveau de difficulte :\n\t1. Facile\n\t2. Moyen\n\t3. Difficile\n\t4. Tres difficile\nVotre choix : ");
                                                  scanf("%ld", &choixDifficulte); /* Choix de la difficulté */
                                                 
                                                  if (choixDifficulte == 1)
                                                          max = 100;
                                                  if (choixDifficulte == 2)
                                                          max = 500;
                                                  if (choixDifficulte == 3)
                                                          max = 1000;
                                                  if (choixDifficulte == 4)
                                                          max = 100000;
                                                         
                                                  srand(time(NULL));
                                  nombreMystere = (rand() % (max - MIN + 1)) + MIN; /* Création du nombre aléatoire */
                                                 
                                                  while (nombreDonne != nombreMystere)
                                                  {
                                                  printf("Quel est le nombre mystere ? ");
                                                  scanf("%ld", &nombreDonne);
                                                 
                                                  if (nombreDonne < nombreMystere)
                                                  {
                                                          printf("C'est plus !\n");
                                                          nombreDeCoups++;
                                                  }
                                                                                                 
                                                  if (nombreDonne > nombreMystere)
                                                  {
                                                          printf("C'est moins !\n");
                                                          nombreDeCoups++;
                                                  }
                                                                                                 
                                                  if (nombreDonne == nombreMystere)
                                                  {
                                                          score = max / nombreDeCoups;
                                                          printf("Bravo, vous avez trouve le nombre mystere en %ld essais !\n", nombreDeCoups + 1);
                                                          printf("Ton score est de %ld !\n", score);
                                                          nombreDeCoups++;
                                                  }
                                                  }
                                                 
                                                  break;
                                         
                                          case 2: /* Ici il entre le nombre minimum et le nombre maximum */
                                                  printf("Entrez le nombre minimum et le nombre maximum :\n\tNombre minimum : ");
                                                  scanf("%ld", &nombreMinimum);
                                                  printf("\tNombre maximum : ");
                                                  scanf("%ld", &max);
                                                 
                                                  if (nombreMinimum > max)
                                                          printf("Le nombre minimum doit etre inferieur au nombre maximum !\n");
                                                  else
                                                  {
                                                          srand(time(NULL));
                                                          nombreMystere = (rand() % (max - nombreMinimum + 1)) + nombreMinimum;
                                                         
                                                          while (nombreDonne != nombreMystere)
                                                          {
                                                          printf("Quel est le nombre mystere ? ");
                                                          scanf("%ld", &nombreDonne);
                                                         
                                                          if (nombreDonne < nombreMystere)
                                                          {
                                                                  printf("C'est plus !\n");
                                                                  nombreDeCoups++;
                                                          }
                                                                                                 
                                                          if (nombreDonne > nombreMystere)
                                                          {
                                                                  printf("C'est moins !\n");
                                                                  nombreDeCoups++;
                                                          }
                                                                                                 
                                                          if (nombreDonne == nombreMystere)
                                                          {
                                                                  score = max / nombreDeCoups;
                                                                  printf("Bravo, vous avez trouve le nombre mystere en %ld essais !\n", nombreDeCoups + 1);
                                                                  printf("Ton score est de %ld !\n", score);
                                                                  nombreDeCoups++;
                                                          }
                                                          }
                                                  break;
                                                 
                                          default:
                                                  printf("Une erreur s'est produite !\n");
                                                  break;
                                  }
                          }
                          }
                         
                          if (nombreJoueurs == 2) /* Si il veulent jouer à deux, un des deux entre le nombre mystere et l'autre le devine */
                          {
                                 
                                  printf("Que le premier joueur entre le nombre mystere : ");
                                  scanf("%ld", &nombreMystere);
                                  printf("\n\n\n\n\n\n\n\n\n\n"); /* Pour éviter que le joueur voit le nombre mystère */
                                 
                                  while (nombreMystere != nombreDonne)
                                  {
                                  printf("Nombre mystere : ");
                                  scanf("%ld", &nombreDonne);
                                 
                                  if (nombreDonne < nombreMystere)
                                  {
                                          printf("C'est plus !\n");
                                          nombreDeCoups++;
                                  }
                                                                                                 
                                  if (nombreDonne > nombreMystere)
                                  {
                                          printf("C'est moins !\n");
                                          nombreDeCoups++;
                                  }
                                 
                                  if (nombreDonne == nombreMystere)
                                  {
                                          score = max / nombreDeCoups;
                                          printf("Bravo, vous avez trouve le nombre mystere en %ld essais !\n", nombreDeCoups + 1);
                                          printf("Ton score est de %ld points !\n", score);
                                          nombreDeCoups++;
                                         
                                          printf ("Voulez-vous rejouer ?\n");
                                  printf("- 1 : Oui\n");
                                  printf("- 2 : Non\n");
                                  printf("Votre choix : ");
                                  scanf("%ld", &continuerPartie);
                                  if (continuerPartie == 1)
                                  {
                                      printf("Debut d'une nouvelle partie !\n\n");
                                      debutPartie = 1;
                                  }
                                  else
                                  {
                                      printf("\nMerci d'avoir joue !!!\n\n");
                                      continuerPartie = 0;
                                                  }
                          }
                          }
                          } while (continuerPartie == 1);
                                         
                          return 0;
                  }
                  }

                                                 
                                                  
                  • Partager sur Facebook
                  • Partager sur Twitter
                    24 décembre 2005 à 13:13:36

                    En tous cas, j'ai une super amélioration, une intelligence artificielle :

                    Euuh, j'ai pas le niveau


                    ouais mais pas trop compliqué quand même, regardez :

                    long contreOrdinateurMaximum = 0;
                             long nombreOrdinateur = 0;
                             long nombreCoupsOrdinateur = 0;
                             printf("Tapez le nombre maximum ");
                             scanf("%ld", &contreOrdinateurMaximum);
                             printf("Choisissez un nombre dans votre tete...\n");
                             system("PAUSE");
                             long ordinateurTrouve = 0;
                             long contreOrdinateurMinimum = 0;
                             while(ordinateurTrouve != 1)
                             {
                                                    nombreCoupsOrdinateur++;
                                                    nombreOrdinateur = (contreOrdinateurMinimum + contreOrdinateurMaximum) / 2;
                                                    printf("Est-ce le nombre %d ?\n\n1. Oui\n2. Non, il est plus petit\n3. Non, il est plus grand\n", nombreOrdinateur);
                                                    scanf("%ld", &ordinateurTrouve);
                                                    switch (ordinateurTrouve)
                                                          {       
                                                                             case 1:
                                                                                  break;
                                                                             case 2:
                                                                                  contreOrdinateurMaximum = nombreOrdinateur;
                                                                                  break;
                                                                             case 3:
                                                                                  contreOrdinateurMinimum = nombreOrdinateur;
                                                                                  break;
                                                                             default:
                                                                                     printf("Vous avez saisit un mauvais nombre, l'ordinateur va reesayer.");
                                                                                     break;
                                                          }
                             }
                        printf("l'ordinateur a trouve votre nombre en %d coups\n", nombreCoupsOrdinateur);


                    On a appris à faire ça !
                    • Partager sur Facebook
                    • Partager sur Twitter
                      24 décembre 2005 à 13:25:51

                      C'est a peu près à quoi je pensai pour faire le mode versus^^!
                      c'est vrai que c'est pratique de joueur contre le PC^^!
                      Et puios c'est pas tellement compliqué, mais l'IA est.....disons....limitée :D !
                      • Partager sur Facebook
                      • Partager sur Twitter
                        24 décembre 2005 à 13:30:09

                        C'est vrai qu'elle ne va pas penser à jurer s'il elle ne trouve qu'après 15 coups ou à dire "tricheur !" s'il le joueur triche...
                        Mais elle fait le café !
                        • Partager sur Facebook
                        • Partager sur Twitter

                        Des idées pour mon "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