Partage
  • Partager sur Facebook
  • Partager sur Twitter

Jeu plus ou moins

    4 octobre 2021 à 10:32:42

    Bonjour, je me permet de vous contacter car j'ai un petit problème sur le jeu Plus ou Moins

    Quand je veux changer la difficulté sur 1 joueur (façon aléatoire ma variable MAX ne change pas en fonction de la difficulté.

    Je vous partage mon édition pour que vous compreniez mieux ce que je veux dire.

    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    
    int main()
    {
        int nombreCherche = 0;
        int nombreMystere = 0;
        int coups = 1;
        int newPartie = 0;
        int joueur = 0;
        int nombre1 = 0;
        int difficulte = 0;
        int MAX = 100;
        const int MIN = 1;
    
    
    do
    {
        int coups = 1;
        printf("Choisissez votre niveau de difficulte !\n");
        printf("1 = Facile , 2 = Moyen , 3 = Difficile");
        scanf("%d",&difficulte);
    
        if (difficulte == 1)
        {
            int MAX = 10;
            printf ("Vous avez choisis le Niveau Facile\n");
        }
        else if (difficulte == 2)
        {
            int MAX = 100;
            printf ("Vous avez choisis le Niveau Moyen\n");
        }
        else if (difficulte == 3)
        {
            int MAX = 1000;
            printf ("Vous avez choisis le Niveau Difficile\n");
        }
        else
        {
            printf("Vous avez choisis le niveau Moyen");
        }
        srand(time(NULL));
        nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
    
        printf("Combien de joueurs etes vous ?\n");
        printf("1 = 1 joueur ; 2 = 2 joueurs\n");
        scanf("%d",&joueur);
    
        if (joueur ==1)
        {
    
            do
        {
    
            printf("Quel est le nombre?\n");
            scanf("%d",&nombreCherche);
    
            if (nombreCherche < nombreMystere)
            {
                printf("C'est plus !\n");
            }
            else if (nombreCherche > nombreMystere)
            {
                printf ("C'est moins !\n");
            }
            else
            {
               printf("Bravo vous avez trouve le chiffre mystere en %d coups !\n",coups);
            }
            coups ++;
        }while (nombreCherche != nombreMystere);
        }
    
        else
        {
                if (difficulte == 1)
                {
                    printf("Le joueur 1 ecrit un nombre entre 1 et 10\n");
                }
                else if (difficulte == 2)
                {
                    printf("Le joueur 1 ecrit un nombre entre 1 et 100\n");
                }
                else if (difficulte == 3)
                {
                    printf("Le joueur 1 ecrit un nombre entre 1 et 1000\n");
                }
                else
                {
                    printf("Le joueur 1 ecrit un nombre entre 1 et 100\n");
                }
    
                scanf("%d",&nombre1);
            do
            {
    
                printf("Quel est le nombre, Joueur 2 ?");
                scanf("%d", &nombreCherche);
    
                if (nombreCherche < nombre1)
                {
                    printf("C'est plus !\n");
                }
                else if (nombreCherche > nombre1)
                {
                    printf("C'est moins !\n");
                }
                else
                {
                    printf("Bravo vous avez trouve le nombre mystere en %d coups \n",coups);
                }
                coups++;
            }while (nombreCherche != nombre1);
        }
    
        printf ("Voulez vous faire une nouvelle partie ? 1 = Oui , 2 = Non\n");
        scanf("%d",&newPartie);
    
    }while (newPartie == 1);
    
        printf("Fin de partie ! bye bye");
        return 0;
    }
    
    Merci à vous en tout cas 
    • Partager sur Facebook
    • Partager sur Twitter
      4 octobre 2021 à 10:42:40

      C'est un problème de portée des variables.

      Quand tu déclares une variable dans un bloc (un bloc c'est ce qui est compris entre deux accolades { }), cette variable n'existe que dans le bloc et cache les variables du même nom en dehors du bloc.

      C'est le cas pour tes variables MAX déclaré lignes 27, 32 et 37.

      • Partager sur Facebook
      • Partager sur Twitter
      ...
        4 octobre 2021 à 17:46:33

        Pour être plus clair, on écrit:
        int MAX  au début seulement.
        ailleurs, on écrit seulement:  MAX = ... quelque chose
        Il y a moyen sans trop de difficulté de n'écrire le jeu qu'une fois quand on a obtenu le nombre mystère, soit avec rand(), soit saisi par l'auttre joueur.
        • Partager sur Facebook
        • Partager sur Twitter

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

          4 octobre 2021 à 19:24:53

          Et c'est exactement la même chose pour coups lignes 9 et 20
          • 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

            4 octobre 2021 à 23:02:53

            Autrement dit il ne faut pas confondre la déclaration avec initialisation

            int truc = 12;


            Avec l'affectation dans  une variable déjà déclarée

            truc = 15;

            Qui change sa valeur.

            • Partager sur Facebook
            • Partager sur Twitter

            Jeu 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