Partage
  • Partager sur Facebook
  • Partager sur Twitter

Correspondenssent de menu

du menu au jeu

    8 janvier 2006 à 18:27:23

    Bonsoir tout le monde :)

    Je suis en train de suivre les cours C/C++ de Mateo.
    J'ai fini le TP du + ou du - et j'ai plein d'amelioration a faire.

    Tout d'abord , les Niveaux:

    Je voudrais plusieur niveau de jeu ( Niveau 1 , [...] Niveau 4 )
    J'ai cree mon menu :

    Citation : Mon menu

    long choixNiveau;

    printf("=== Choix du Niveau ===\n\n");
    printf("1. Niveau 1\n");
    printf("2. Niveau 2\n");
    printf("3. Niveau 3\n");
    printf("4. Niveau 4\n\n");
    printf("Votre choix ?\n\n");
    scanf("%ld", &choixNiveau);
    printf("\n");

    switch(choixNiveau)
    {
    case 1:
    printf("Vous avez choisi le niveau 1 \n\n\tPratique pour commencer ;)");
    break;
    case 2:
    printf("Vous avez choisi le niveau 2 \n\n\tAllaize !");
    break;
    case 3:
    printf("Vous avez choisi le niveau 3 \n\n\tQuel Pro !");
    break;
    case 4:
    printf("Vous avez choisi le niveau 4 \n\n\tBon courage ...Vous en aurez besoin...");
    break;
    default:
    printf("Vous n'avez pas rentre un nombre correct.");
    break;
    }
    printf("\n\n\n\n");



    Jusqu'à la , tout va bien .

    Mais comment faire pour que quand je fasse 1 , cela m'amene vers le jeu niveau 1 . 2 ke jeu niveau 2 , ect.....


    Je voudrais aussi avoir la possibiliter de faire ca une fois le nombre trouver :

    "Tapez 1 pour recomencer"
    "Tapez 2 pour modifier les parametres"

    Comment faire SVP ?? :D
    merci par avance

    • Partager sur Facebook
    • Partager sur Twitter
      8 janvier 2006 à 18:38:27

      fait des fonctions (si tu lit bien tout les cours tu devrait savoir faire)
      • Partager sur Facebook
      • Partager sur Twitter
        8 janvier 2006 à 18:47:59

        Citation : FoRmOl


        Je voudrais aussi avoir la possibiliter de faire ca une fois le nombre trouver :

        "Tapez 1 pour recomencer"
        "Tapez 2 pour modifier les parametres"


        Il suffit de faire :

        do
        {
            /*toutes les instructions de ton programme */
            printf("1 = recommencer; 2 = quitter");
            scanf("%ld", &choix);
        }while(choix != 2);


        Citation : FoRmOi

        Mais comment faire pour que quand je fasse 1 , cela m'amene vers le jeu niveau 1 . 2 ke jeu niveau 2 , ect.....


        Là, c'est plus simple : dans ton switch, il suffit de modifier la valer de tes variables selon le niveau que l'utilisateur demande. Par exemple, de mettre NombreMax à 1000 au niveau 3, et de limiter à 5 essais au niveau 15... Si tu le met avant ton break; ça sera éxécuter, et tu n'aura plus qu'à "aléatoiriser" le nombre après, selon les conditions que tu aura établi...
        • Partager sur Facebook
        • Partager sur Twitter
          8 janvier 2006 à 18:54:40

          pas tt compris , mais j'ai fait un truc genre ca :

          if (choixNiveau = 2)
          {

          long nombreMystere = 0, nombreEntre = 0;
          const long MAX = 500, MIN = 1;

          // Génération du nombre aléatoire

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

          /* La boucle du programme. Elle se répète tant que l'utilisateur
          n'a pas trouvé le nombre mystère */
          printf ("Devinez le nombre mystere qui est compris entre 1 et 500 :\n\n");
          do
          {
          printf("Quel est le nombre mystere?\n\n");
          scanf("%ld",&nombreEntre);

          if (nombreMystere > nombreEntre)
          printf("\nC'est plus que %ld .\n",nombreEntre);
          else if (nombreMystere < nombreEntre)
          printf("\nC'est moins que %ld .\n",nombreEntre);
          else
          printf("\nBravo! Vous avez trouvez %ld qui est le Nombre Mystere\n\n\n",nombreEntre);
          }

          while (nombreEntre != nombreMystere);
          }



          ca marche pas :colere:
          • Partager sur Facebook
          • Partager sur Twitter
            8 janvier 2006 à 19:02:40

            Essaie d'utiliser les fonctions si tu en ait arriver à ce point du cours, ça te permettra d'avoir un code beaucoup plus simple...
            De plus, si tu veut pouvoir recommencer ton programme en boucle, essaie de déclarer toutes les variables et d'initialiser le srand au début du main.
            Et ferme la boucle de ton if(choixniveau == 2) AVANT de commencer ta boucle do ... while(nombreentre != nombremystere), l'erreur vient de là, cette dernière boucle ne s'éxécute que si le niveau == 2;
            • Partager sur Facebook
            • Partager sur Twitter
              8 janvier 2006 à 19:04:54

              lool
              j'ai suivi le cour , mais j'ai rien compris a ce que ta dit :euh:^^

              ca te derange pas de me corriger le truc pour que je vois ou j'ai fait une erreur stp ?

              j'ai vraiment rien compris a ce que ta dit ^ :( ^
              et pourtt j'ai eu que des 20/20 sauf un 10 et un 15 ^^
              • Partager sur Facebook
              • Partager sur Twitter
                8 janvier 2006 à 19:08:14

                tu as lu les fonctions ?
                • Partager sur Facebook
                • Partager sur Twitter
                  8 janvier 2006 à 19:10:22

                  ha non , pas encore vu que c'est en dessous du TP
                  • Partager sur Facebook
                  • Partager sur Twitter
                    8 janvier 2006 à 19:13:16

                    Citation

                    ca te derange pas de me corriger le truc pour que je vois ou j'ai fait une erreur stp ?


                    Ouais, pas de problème, je m'en occupe, par contre, ça va me prendre un peu de temps (je te fait le code avec les boucles que tu voulais et les commentaires, en utilisant les fonctions, par contre, comme j'ai pas internet illimité, ça risque d'être seulement pour demain...)
                    • Partager sur Facebook
                    • Partager sur Twitter
                      8 janvier 2006 à 19:16:53

                      je te passe le jeu pour que tu le mettent dedans.

                      long nombreMystere = 0, nombreEntre = 0;
                      const long MAX = 100, MIN = 1;

                      // Génération du nombre aléatoire

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

                      /* La boucle du programme. Elle se répète tant que l'utilisateur
                      n'a pas trouvé le nombre mystère */
                      printf ("Devinez le nombre mystere qui est compris entre 1 et 100 :\n\n");
                      do
                      {
                      printf("Quel est le nombre mystere?\n\n");
                      scanf("%ld",&nombreEntre);

                      if (nombreMystere > nombreEntre)
                      printf("\nC'est plus que %ld .\n",nombreEntre);
                      else if (nombreMystere < nombreEntre)
                      printf("\nC'est moins que %ld .\n",nombreEntre);
                      else
                      printf("\nBravo! Vous avez trouvez %ld qui est le Nombre Mystere\n\n\n",nombreEntre);
                      }

                      while (nombreEntre != nombreMystere);


                      apres je ferais les modifications des niveaux , le ompte a rebours , ect.. ( pck faut que je fasse quelque truc quand meme sinon ya plus de fierter :p )

                      sinon , t'es pas obliger d'etre conecter pour le faire, dc tu peux le faire et apres te conecter pr le poster non ? :euh:

                      enfin , fait comme tu le sens :p

                      je te remerice par avance
                      • Partager sur Facebook
                      • Partager sur Twitter
                        8 janvier 2006 à 19:30:45

                        Déjà enleve le break; de fin, y en a pas besoin pour le default.
                        • Partager sur Facebook
                        • Partager sur Twitter
                          8 janvier 2006 à 20:19:06

                          ok , ca fera deja une erreur en moins ^^
                          merci
                          up:p
                          • Partager sur Facebook
                          • Partager sur Twitter
                            8 janvier 2006 à 20:20:30

                            Attends, en y réfléchissant, le code que tu me passe, il marche très bien (mis à part le system("pause"); qui manque à la fin... Si tu doit rajouter les niveaux et le compte à rebours, je te le ressort tel quel !

                            EDIT : voila le code promis !

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

                            int main()
                            {
                                    long nombreMystere = 0, nombreEntre = 0, niveau, recommencer;
                                    /*const long MAX = 100, MIN = 1;*/
                                    long MAX = 100, MIN = 1;//j'ai retirer le const qui gène si on modifie par raport au niveau...
                                   
                                    // Génération du nombre aléatoire
                                   
                                    srand(time(NULL));
                                   
                                    do
                                    {
                                            printf("choisissez votre niveau(1,2,3,4,5)\n");
                                            scanf("%ld", &niveau);
                                           
                                            switch(niveau)//on modifie MAX et MIN selon le niveau
                                            {
                                                    case 1:
                                                    MAX = 50;
                                                    break;
                                                   
                                                    default:
                                                    MAX = 500;
                                            }
                                           
                                            nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
                                           
                                            /* La boucle du programme. Elle se répète tant que l'utilisateur
                                            n'a pas trouvé le nombre mystère */

                                            printf ("Devinez le nombre mystere qui est compris entre 1 et 100 :\n\n");
                                            do
                                            {
                                                    printf("Quel est le nombre mystere?\n\n");
                                                    scanf("%ld",&nombreEntre);
                                                   
                                                    if (nombreMystere > nombreEntre)
                                                            printf("\nC'est plus que %ld .\n",nombreEntre);
                                                    else if (nombreMystere < nombreEntre)
                                                            printf("\nC'est moins que %ld .\n",nombreEntre);
                                                    else
                                                            printf("\nBravo! Vous avez trouvez %ld qui est le Nombre Mystere\n\n\n",nombreEntre);
                                            }while (nombreEntre != nombreMystere);
                                           
                                           
                                            printf("voulez-vous recommencer ?(1=>non, 2 => oui)\n");
                                            scanf("%ld", &recommencer);
                                            --recommencer;
                                    }while(recommencer);
                            }
                            • Partager sur Facebook
                            • Partager sur Twitter
                              8 janvier 2006 à 20:36:31

                              comemnt ça marche le compte a rebours ?
                              • Partager sur Facebook
                              • Partager sur Twitter
                                8 janvier 2006 à 20:39:40

                                Ben, tu limite le nmobre d'essai à un certain nombre, que tu annonce à chaque essai, et tu rajoute une condition pour dire que tu as perdu si ce nombre d'essais est dépassé. Je lui ait laissé le faire, mais c'est pas spécialement dur... ( (int) --nombreEssais; )
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  8 janvier 2006 à 20:43:15

                                  oui mais pour les seconde ??
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    8 janvier 2006 à 20:49:44

                                    Compte à rebours pour les secondes, ça risque d'être dur, puiqu'il faudrait que le jeu intervienne pendant le scanf, donc je pense pas que ça soit possible (mais je suis pas non plus un super-génie du C).
                                    (ouais, t'avais raison, il l'entendait comme ça le teme compte à rebours...).
                                    Sinon, tu peut le faire en utilisant la bibliothèque <time.h>, mais ça ne peut pas se tester pendant un scanf, donc ça va faire bizarre... faudrait le laisser rentrer son nombre et lui dire qu'il a été trop long après qu'il l'ai rentrer...
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      8 janvier 2006 à 21:04:05

                                      Yop, j'ai pas lu tout le topic seulement les derniers messages mais pour faire un compte à rebours c'est tout simple :

                                          int seconde;
                                         
                                          for(seconde = 60; seconde != 0; seconde--)
                                          {   
                                              system("cls");
                                              printf("%d", seconde);
                                              sleep(1000);
                                          }     


                                      ++

                                      ps: dsl si je rep à coté de la plaque :euh:

                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        8 janvier 2006 à 21:08:30

                                        Juste comme ça, que signifie Correspondenssent ?

                                        Edit : Et quand on dit compte à rebours, il ne faut pas penser __secondes__, mais __nombres__.
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          8 janvier 2006 à 23:46:23

                                          en gros , ta rejouter quoi ?

                                          sinon ,ya un pb :
                                          quelque sois le niveau , ca dit que le nombre mystere est entre 1 et 100....

                                          sinon , j'aimerais comprendre pour le refaire moi meme svp
                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            9 janvier 2006 à 20:26:44

                                            Ben, il faut modifier le switch : tu affiche le texte en fonction de la valeur de MAX, et tu modifie la valeur de MAX en fonction de niveau ... (met-les dans le bon ordre par conte ^^).
                                            En gros, j'ai rajouter les boucles qui te permettent de recommencer à jouer... Et c'est à peu près tout, mais tu peut nous passer des extratit de codes pour savoir comment améliorer telle ou telle fonction : D'ailleurs, tu remarquera que je ne l'ai pas fait en fonction, mais ton code sera BEAUCOUP plus clair si il était décomposé en fonction (oui, je sais, c'est le mien), donc si tu as finit le cours de m@teo, utilise toutes les bases de la première partie, et tu pourras faire un prog de bêêêttteee...^^

                                            EDIT : erreur de manip', désolé
                                            • Partager sur Facebook
                                            • Partager sur Twitter

                                            Correspondenssent de menu

                                            × 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