Partage
  • Partager sur Facebook
  • Partager sur Twitter

"Plus ou moins" amélioré

marche pas >_<

Sujet résolu
    22 décembre 2005 à 13:56:54

    J'ai voulu tenter de faire le système du Tp1 amélioré (difficulté, plusieurs joueurs & recommencer une partie) mais j'ai un problème. Une fois le nombre trouvé, il recommence une partie quel que soit le choix que l'on fait.

    Voilà mon code :

    /*
    PLUS OU MOINS
    ---------------
    Par Maximelene, d'aprés les cours du Site du Zér0
    Le 22/12/05
    */


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

    int main(int argc, char *argv[])
    {
        long nombreDeJoueurs, nombreMaximum, nombre, nombreEntre, difficulte, continuerPartie = 1, debutPartie = 1;
        const long MIN = 1;
        do
        {
            if (debutPartie)
            {
                printf("Bienvenue dans \"Plus ou Moins\" !\n\n");
                printf("Nombre de joueurs :\n");
                printf("- 1 joueur\n");
                printf("- 2 joueurs\n\n");
                printf("Votre choix : ");
                scanf("%ld", &nombreDeJoueurs);
                printf("\n");
                if (nombreDeJoueurs == 2)
                {
                    printf("Vous jouerez donc a deux !\n\n");
                    printf("Le premier joueur peut entrer le nombre !\n\n");
                    printf("Nombre mystere : ");
                    scanf("%ld", &nombre);
                }
                else
                {
                    printf("Vous jouerez donc seul !\n\n");
                    nombreDeJoueurs = 1;
                    printf("Niveau de difficulte :\n");
                    printf("- 1 : facile\n");
                    printf("- 2 : moyen\n");
                    printf("- 3 : difficile\n");
                    printf("- 4 : infernal\n");
                    printf("Votre choix : ");
                    scanf("%ld", &difficulte);
                   
                        switch (difficulte)
                        {
                        case 4:
                        printf("Mode infernal ? Bonne chance...");
                        nombreMaximum = 1000000;
                        break;
                       
                        case 3:
                        printf("Eh bien, quel courage !");
                        nombreMaximum = 10000;
                        break;
                       
                        case 2:
                        printf("Vous etes joueur...");
                        nombreMaximum = 1000;
                        break;
                       
                        default:
                        printf("Vous n'etes pas tres courageux...");
                        nombreMaximum = 100;
                        }
                    printf("\n\n");
                   
                    // détermination du nombre
                    srand(time(NULL));
                    nombre = (rand() % (nombreMaximum - MIN + 1)) + MIN;
                   
                }
                debutPartie = 0;
            }
            do
            {
                printf("D'apres vous, quel est le nombre mystere ?");
                scanf("%ld", &nombreEntre);
                if (nombre > nombreEntre)
                {
                    printf("C'est plus !\n\n");
                }
                else if (nombre < nombreEntre)
                {
                    printf("C'est moins !\n\n");
                }
                else
                {
                    printf ("Vous avez decouvert le nombre mystere !!!\n\n");
                    printf ("Voulez-vous rejouer ?\n");
                    printf("- 1 : Oui\n");
                    printf("- 2 : Non\n");
                    printf("Votre choix : ");
                    scanf("%ld", &continuerPartie);
                    if (continuerPartie)
                    {
                        printf("Debut d'une nouvelle partie !\n\n");
                        debutPartie = 1;
                    }
                    else
                    {
                        printf("Merci d'avoir joue !!!\n\n");
                        continuerPartie = 0;
                        system("PAUSE");
                        return 0;
                    }
                }
            } while (nombreEntre != nombre);
        } while(continuerPartie);
    }


    Voilà, si vous pouviez m'aider à comprendre pourquoi ça ne marche pas...
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      22 décembre 2005 à 13:59:27

      if (continuerPartie)

      tu donnes le choix entre 1 et 2. Ces valeurs sont toujours "justes". Donc on recommence tojours.
      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        22 décembre 2005 à 14:08:38

        Dans cette partie :
        else
                    {
                        printf ("Vous avez decouvert le nombre mystere !!!\n\n");
                        printf ("Voulez-vous rejouer ?\n");
                        printf("- 1 : Oui\n");
                        printf("- 2 : Non\n");
                        printf("Votre choix : ");
                        scanf("%ld", &continuerPartie);
                        if (continuerPartie == 1)<==Tu as oublier ==1 ==>
                        {
                            printf("Debut d'une nouvelle partie !\n\n");
                            debutPartie = 1;
                        }
                        else
                        {
                            printf("Merci d'avoir joue !!!\n\n");
                            continuerPartie = 0;
                            system("PAUSE");
                            return 0;
                        }
                    }
                } while (nombreEntre != nombre);
            } while(continuerPartie ==1);//<===Tu a oublier == 1 ==>//
        }


        Je pense que c'est bon maintenant.
        Hybrix
        • Partager sur Facebook
        • Partager sur Twitter
          22 décembre 2005 à 14:11:12

          if (continuerPartie)
                          {
                              printf("Debut d'une nouvelle partie !\n\n");
                              debutPartie = 1;
                          }
                          else
                          {
                              printf("Merci d'avoir joue !!!\n\n");
                              continuerPartie = 0;
                              system("PAUSE");
                              return 0;
                          }

          ce code veut dire si continuerPartie est positif, printf("Debut d'une nouvelle partie !\n\n");
          debutPartie = 1;
          sinon (continuer parie nul ou negatif), printf("Merci d'avoir joue !!!\n\n");
          continuerPartie = 0;
          system("PAUSE");
          return 0;

          mais juste avant, quand tu demandes si l'utilisateur veut recommancer, les deux seuls choix que tu lui donnes c'est 1 = oui et 2 = non mais dans les deux cas, c'est positif ! donc dans les deux cas ca recommence...

          tu dois donc remplacer ce bout de code
          printf("- 1 : Oui\n");
          printf("- 2 : Non\n");
          printf("Votre choix : ");
          scanf("%ld", &continuerPartie);


          par
          printf("- 1 : Oui\n");
          printf("- 0 : Non\n");
          printf("Votre choix : ");
          scanf("%ld", &continuerPartie);


          voila :)

          EDIT : ah m****... grillé :p
          • Partager sur Facebook
          • Partager sur Twitter
            22 décembre 2005 à 14:14:12

            Hop, corrigé et j'ai ajouté un système de scores !

            Je le publie (avec un sujet pour les scores :p)
            • Partager sur Facebook
            • Partager sur Twitter

            "Plus ou moins" amélioré

            × 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