Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Jeu du Plus ou Moins] Ameliorations

problème avec une amélioration du code ...

    9 avril 2006 à 20:35:31

    Bonsoir,

    J'ai un problème avec le jeu du plus ou du moins, plus précisemment, avec une amélioration que j'ai voulu lui apporter. Celle de savoir si oui ou non il veut faire une partie.

    Je vous met le code :

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

    int main()
    {
            long nbreMystere = 0, nbreEntre = 0, nbreEssai = 0, continuerPartie = 1;
            const long MAX = 100, MIN = 1;

            srand(time(NULL));
        nbreMystere = (rand() % (MAX - MIN + 1)) + MIN;

        printf("Voulez-vous faire une partie ? \n");
        printf("1 Oui, je le veux \n");
        printf("2 Non, trop nul \n");
        scanf("%ld", &continuerPartie);

        switch(continuerPartie)
        {
            case 1 :

            while(nbreEntre != nbreMystere)
            {
                printf("Je vous prierais de bien vouloir choisir un nombre entre 1 et 100 \n");
                scanf("%ld", &nbreEntre);

                //On compare le nombre mystère avec le nombr entré
                if(nbreMystere > nbreEntre)
                {
                    printf("C'est plus !\n");
                }
                else if(nbreMystere < nbreEntre)
                {
                    printf("C'est moins !\n");
                }
                else
                {
                    printf("Bravo, tu viens de trouver le nombre mystere qui etait : %ld en %ld coups\n", nbreMystere, nbreEssai);
                }
                nbreEssai++;

            }
            case 2 :
            printf("Que voulez-vous faire ?");
            break;

            default :
            printf("BUG");
        }


            return 0;
    }


    J'ai volontairement oublier le break;à la fin du cas n°1 car si je le met, je ne peut que mettre un nombre et après je suis obliger de quitter. Si je l'enlève, dès que je trouve le nombre Mystère il m'affiche le cas n°2. Comment faire pour qu'il ne me l'affiche plus ?
    J'ai déjà tenter avec un if au lieu d'un switch mais ça ne fonctionne pas.
    Merci d'avance :D

    EDIT : J'ai mis une boucle do...while et çela fonctionne. Bon c'était pas encore assez compliquer comme code alors j'ai rajouté des niveaux.
    Mais là, je ne sais vraiment pas comment faire comprendre à l'ordinateur qu'il faut qu'il crée un nombre par rapport au niveau.
    Autre question, si je veux que ma condition switch ce base sur deux fonctions, je met des "||" entre les deux ?
    • Partager sur Facebook
    • Partager sur Twitter
      10 avril 2006 à 1:22:01

      Citation : Marksman

      J'ai volontairement oublier le break;à la fin du cas n°1 car si je le met, je ne peut que mettre un nombre et après je suis obliger de quitter.


      o_O
      T'es sûr que tu as mis le "break" hors de la boucle while? Parce que si tu met un break après la boucle while, tout devrait fonctionner.

      Citation : Marksman

      dès que je trouve le nombre Mystère il m'affiche le cas n°2. Comment faire pour qu'il ne me l'affiche plus ?

      Ben entre la fin de la boucle while et le cas 2 (donc toujours dans le cas 1) tu ajoute le code qui sera exécuté lorsque le joueur aura trouvé le nombre.
      Et ajoute le break à la fin du cas 1 comme expliqué au-dessus, ça dira au programma d'arrêter la boucle switch et donc il n'exécutera pas le cas 2.

      Citation : Marksman

      Bon c'était pas encore assez compliquer comme code alors j'ai rajouté des niveaux.
      Mais là, je ne sais vraiment pas comment faire comprendre à l'ordinateur qu'il faut qu'il crée un nombre par rapport au niveau.


      Si tu mettais le code qui gère les niveaux, ça pourrait nous aider ;)

      Citation : Marksman

      si je veux que ma condition switch ce base sur deux fonctions, je met des "||" entre les deux


      Non, fais comme ceci:
      switch(variable){
           case 1:
           case 2:
                //instructions à faire si variable==1 || variable ==2
                break;

      Dans ce cas-ci, on ne met pas le break à la fin du cas 1 pour que si variable==1 il exécute le cas 2, ce qui équivaut à la relation "variable==1||variable==2"
      • Partager sur Facebook
      • Partager sur Twitter
        16 avril 2006 à 18:20:16

        Rebonjour !

        J'ai tenté par 1'000 façons de modifier mon code de ce Mini-Jeu pour lui intégrer 3 niveaux. Je ne l'ai pas terminé car je ne vois pas comment faire pour expliquer à l'ordinateur que si on choisit le niveeau 2, on doit chercher un nombre entre 1 et 1'000 par exemple.

        Avez-vous une solution ?
        Je vous mets mon code, si vous voyez des erreurs dites-le moi svpl !
        Merci d'avance.


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

        int main()
        {
                long nbreMystere = 0, nbreEntre = 0, nbreEssai = 0, continuerPartie = 1;
                char niveau = 0;
                long MAX = 10000, MIN = 1;

            printf("Voulez-vous faire une partie ? \n"); // On y demande si il veut faire une partie ou non

            printf("1 Oui, je le veux \n");
            printf("2 Non, trop nul \n");
            scanf("%ld", &continuerPartie);


            // On genere un nombre au hasard
                srand(time(NULL));
            nbreMystere = (rand() % (MAX - MIN + 1)) + MIN;

            switch(continuerPartie)//d'après sa réponse
            {
                case 1 :

            printf("De quel niveau etes-vous ? \n"); // On y demande son niveau

            printf("De niveau 1 \n");
            printf("De niveau 2 \n");
            printf("De niveau 3 \n");
            scanf("%ld", &niveau);

            switch(niveau) // d'après son niveau on affiche ce qu'il doit chercher
            {
                case 1 :
                printf("\nVous devez chercher un nombre entre 1 et 100 \n");
                break;

                case 2 :
                printf("\nVous devez chercher un nombre entre 1 et 1'000 \n");
                break;

                case 3 :
                printf("\nVous devet chercher un nombre entre 1 et 10'000 \n ");
                break;

                default :
                printf("\nVous n'avez pas selectioner votre niveau !\n");
            }



                do
                {
                    printf("\nLe nombre mystere est : \n");
                    scanf("%ld", &nbreEntre);

                    //On compare le nombre mystère avec le nombre entré
                    if(nbreMystere > nbreEntre)
                    {
                        printf("C'est plus !\n");
                    }
                    else if(nbreMystere < nbreEntre)
                    {
                        printf("C'est moins !\n");
                    }
                    else
                    {
                        printf("Bravo, tu viens de trouver le nombre mystere qui etait : %ld en %ld coups\n", nbreMystere, nbreEssai);
                        printf("Tu as reussi de trouver un nombre de niveau %ld", niveau);
                    }
                    nbreEssai++;
                }
                while(nbreEntre != nbreMystere);

                break;

                case 2 :
                printf("Que voulez-vous faire ?");
                break;

                default :
                printf("BUG");
            }


                return 0;
        }
        • Partager sur Facebook
        • Partager sur Twitter
          17 avril 2006 à 11:03:03

          Aha, dans ce cas personne ne sait comment résoudre mon problème :( ...
          Bon, je vais continuer les cours et faire des UPs jusqu'à ce que quelqu'un vienne m'aider ^^
          Ca peut prendre du temps mais le temps je l'ai alors je le prendrai :D
          • Partager sur Facebook
          • Partager sur Twitter
            17 avril 2006 à 12:36:45

            Citation : Marksman

            Aha, dans ce cas personne ne sait comment résoudre mon problème :( ...


            Le plus simple est de mettre le jeu dans une fonction et de passer un paramètre niveau. Ensuite, on appelle la fonction par un menu qui selectionne le bon niveau.

            BEGIN
             REPEAT
              menu()
              choix := demander()
              IF NOT choix = fin
              BEGIN
                  niveau := convertir_choix_en_niveau(choix)
                  jouer (niveau)
              END
             UNTIL choix = fin
            END

            Chaque fonction a un travail simple à faire, mais elle le fait bien.
            • Partager sur Facebook
            • Partager sur Twitter
            Music only !
            Anonyme
              17 avril 2006 à 13:35:25

              J'ai compri ton problème.
              Ton code n'est pas logique, tu génère le nombre et tu demande le niveau ensuite.
              Il faut faire l'inverse. Je vais éclairer ta lanterne.

              printf("De quel niveau etes-vous ? \n"); // On y demande son niveau

                  printf("De niveau 1 \n");
                  printf("De niveau 2 \n");
                  printf("De niveau 3 \n");
                  scanf("%ld", &niveau);

                 switch(niveau) // d'après son niveau on affiche ce qu'il doit chercher et on met MAX à jour
                  {
                      case 1 :
                      printf("\nVous devez chercher un nombre entre 1 et 100 \n");
                      MAX = 100;
                      break;

                      case 2 :
                      printf("\nVous devez chercher un nombre entre 1 et 1'000 \n");
                      MAX = 1000;
                      break;

                      case 3 :
                      printf("\nVous devet chercher un nombre entre 1 et 10'000 \n ");
                      MAX = 10000;
                      break;

                      default :
                      printf("\nVous n'avez pas selectioner votre niveau !\n");
                  }

                  // Et ensuite seulement tu genere ton nombre
                      srand(time(NULL));
                  nbreMystere = (rand() % (MAX - MIN + 1)) + MIN;


              Voilà @+
              • Partager sur Facebook
              • Partager sur Twitter

              [Jeu du Plus ou Moins] Ameliorations

              × 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