Partage
  • Partager sur Facebook
  • Partager sur Twitter

Créer plusieurs sous-Menu dans un Menu

Sujet résolu
11 mai 2019 à 20:22:52

Bonjour,

Je suis actuellement le cours sur le langage C, je suis rendu au premier exercice à rendre, donc je n'ai pas vue toute les possiblités de code envisagable, seulement ( condition, boucles et fonction ) présente dans les cours.

Ma question est simple j'aimerai créer des sous-menu dans mon menu principal.
Les Sous-Menu renverons vers les fonctions, qui pourrons renvoyer vers d'autre fonction.

ex : Menu Principal ==> Sous-Menu Choix Difficulté ==> Fonction modeDifficulté ==> Fonction unJoueur

Voici mon code en cours de création.

#include <stdio.h>
#include <stdlib.h>
// Fonction About
void about()
{
        printf("==========================\n");
        printf("===== MENU PRINCIPAL =====\n");
        printf("===== PLUS && MOINS ======\n");
        printf("======= THE GAME =========\n");
        printf("====== Creer Med_Wo ======\n");
        printf("==========================\n");
        printf("\n");
}
// Fonction Menu Principal
int menuPrinc()
{
    int choixMenu = 0;
     // Menu Principal du Jeu
    do
    {
       {
        printf("===== Menu Principal =====\n\n");
        printf("1.Regle du Jeu\n");
        printf("2.Difficulte\n");
        printf("3.Mode de jeu\n");
        printf("4.PLAY\n");

        scanf("%d", &choixMenu);
        printf("\n");
       }
    }while (choixMenu < 1 || choixMenu > 3);
   return choixMenu;
}
// Fonction Règle du Jeu
void Rules ()
{
    printf("Votre mission si vous l'acceptez trouvez le NOMBRE MYSTERE\n");
    return menuPrinc();
}
// Fonction  Menu Choix Difficulté
int Difficulte ()
{
int choixDiff = 1;

        printf("==== DIFFICULTE ====\n\n");
        printf("1. EASY 1-100\n");
        printf("2. NORMAL 1-1000\n");
        printf("3. HARD 1-10000\n");
        printf("4. GOD MODE 1-100000\n");
   do
   {
       printf("Votre Choix ?");
       scanf("%d", &choixDiff);
   }while (choixDiff > 1 || choixDiff < 4);

}

int main()
{
    about();

    switch (menuPrinc())
       case 1:
        //Choix 1 renvoi vers ma fonction Rules 
          printf("==== REGLES DU JEU ====\n");
          void Rules()
          break; /* Ici j'ai un code erreur lors de la compilation 
error: break statement not within loo or switch
error: case label not within a switch statement */

       case 2:
        //Choix 2 renvoi vers ma fonction Difficulte
          Difficulte();
       case 3:
        // Choix 3 qui renvera vers ma futur fonction ModeDeJeu
       case 4: 
       // Choix 4 qui renvera directement vers lancement du jeu.

    return 0;
}

Les suggestions et aides sur le code sont les bienvenues. ;) 

Merci par avance.

-
Edité par Med_Wo 12 mai 2019 à 18:08:19

  • Partager sur Facebook
  • Partager sur Twitter
12 mai 2019 à 21:14:09

Bon aprés plusieurs heures passé à planché sur mon problème, j'ai enfin trouver la solution, la plupart de mes soucis venait d'erreur de débutant avec des oublies de { .

Mon code 

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

// Fonction About
void about()
{
        printf("==========================\n");
        printf("===== MENU PRINCIPAL =====\n");
        printf("===== PLUS && MOINS ======\n");
        printf("======= THE GAME =========\n");
        printf("==========================\n");
        printf("\n");
}

// Fonction Menu Principal
int menuPrinc()
{
int choixMenu = 0;


        printf("===== Menu Principal =====\n\n");
        printf("1. Regles du Jeu\n");
        printf("2. Difficulte\n");
        printf("3. Mode de Jeu\n");
      do
       {
        printf("Votre choix ? ");
        scanf("%d", &choixMenu);
        printf("\n");
       }while (choixMenu < 1 || choixMenu > 4);
}

// Fonction Règle du Jeu
int Rules ()
{
    printf("===== REGLES DU JEU ======\n\n");
    printf("Les regles sont simple trouver le NOMBRE MYSTERE\n");
    printf("en utilisant le moins de coup possible\n\n");
    printf("======== ENJOY !! ========\n\n");
    return choixDifficulte();
}

// Fonction  Menu Choix Difficulté
int choixDifficulte ()
{
int choixDiff = 0;
        printf("==== CHOIX DIFFICULTE ====\n\n");
        printf("1. EASY 1-100\n");
        printf("2. NORMAL 1-1000\n");
        printf("3. HARD 1-10000\n");
        printf("4. GOD MODE 1-100000\n");
     do
        {
         printf("Votre choix ? ");
         scanf("%d", &choixDiff);
         printf("\n");
        }while (choixDiff < 1 || choixDiff >4);
        return modeDeJeu();
}

// Fonction Mode de Jeu
int modeDeJeu ()
{
  int modeJeu = 0;
         printf("===== MODE DE JEU =====\n");
         printf("1. 1 Joueur\n");
         printf("2. 2 Joueurs\n");

         printf("Votre choix ? ");
         scanf("%d", &modeJeu);

}

// Fonction Main
int main(int argc, char *argv[])
{
int choixMenu = 0, nombreMaximum = 0, modeJeu = 0, nombreMystere = 0;
int nombreSaisie = 0, compteur = 0, continuerPartie = 1;
const int MIN = 1;

about();

choixMenu = menuPrinc();

int menuPrinc();
  do
   {
     if (choixMenu == 1)
       {
       Rules();
      }

     else if (choixMenu == 2)
       {
        choixDifficulte();
    switch (choixDifficulte())
         {
          case 1:
              nombreMaximum = 100;
              break;
          case 2:
              nombreMaximum = 1000;
              break;
          case 3:
              nombreMaximum = 10000;
              break;
          case 4:
              nombreMaximum = 100000;
              break;
          default:
              printf("Merci de choisir un choix proposer\n");
              break;
         }
       }
     else if(choixMenu == 3)
       {
        modeDeJeu();
        switch (modeDeJeu())
           {
           case 1:
               srand(time(NULL));
               nombreMystere = (rand() % ( nombreMaximum - MIN + 1)) + MIN;
               break;
           case 2:
               printf("*** EN DEV ***\n");
               break;
           default:
               printf("Selectionner un mode\n");
               break;
           }
        }
   }while (choixMenu < 1 || choixMenu > 3);

 do // Boucle Continuer Partie
  {
 do // Boucle Jeu
  {
      printf("\nQuel est le nombre mystere ? ");
      scanf("%d", &nombreSaisie);

      compteur++;
           if (nombreSaisie == nombreMystere)
             {
              printf("Bravo, vous avez trouve le nombre mystere en %d coup(s)!!!\n\n", compteur);
             }
           else if (nombreSaisie < nombreMystere)
             {
              printf("C'est plus !\n", compteur++);
             }
           else if (nombreSaisie > nombreMystere)
             {
              printf("C'est moins !\n", compteur++);
             }
  }while (nombreSaisie != nombreMystere);

    printf("Voulez-vous rejouer ? \n");
    printf("1.OUI\n");
    printf("2.NON\n");

    printf("Votre choix ?");
    scanf("%d", &continuerPartie);
    printf("\n");

  }while (continuerPartie == 1);

   printf("Merci d'avoir jouer !!\n\n");

    return 0;
}


EDIT 12/05/19 Problème de Sous-Menu dans Menu RESOLU

EDIT 13/05/19 Problème de compteur RESOLU

-
Edité par Med_Wo 13 mai 2019 à 17:25:01

  • Partager sur Facebook
  • Partager sur Twitter
12 mai 2019 à 23:04:57

Hello,

Tes fonctions menuPrinc() et choixDifficulte() ne renvoient rien....

  • 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

13 mai 2019 à 10:19:51

Salut edgarjacobs,

Oui effectivement, j'avais mal compris l'utilisation du return, je pense maintenant avoir compris un peux mieux sont fonctionnement. Merci pour cette remarque :)

Maintenant un autre problème m'empèche d'avancer, ma fonction choixDifficulete() ne renvoie pas ma variable nombreMaximum compris dans mes choix à ma fonction modeDeJeu().

Donc lors du lancement de la boucle Jeu je me retrouve avec le nombreMystere qui utilisse la variable initialise à 0 et non la variable choisit dans la fonction choixDiff.

// Ici on entre le choix de Difficulte
choixDifficulte();
    switch (choixDifficulte())
         {
          case 1:
              nombreMaximum = 100;
              break;
          case 2:
              nombreMaximum = 1000;
              break;
          case 3:
              nombreMaximum = 10000;
              break;
          case 4:
              nombreMaximum = 100000;
              break;
          default:
              printf("Merci de choisir un choix proposer\n");
              break;
         }
       }
     else if(choixMenu == 3)
       {
        modeDeJeu(); 
        switch (modeDeJeu())
           {
           case 1: // Qui devrait être utliser ICI
               srand(time(NULL));
               nombreMystere = (rand() % ( nombreMaximum - MIN + 1)) + MIN;
               break;

-
Edité par Med_Wo 13 mai 2019 à 10:20:11

  • Partager sur Facebook
  • Partager sur Twitter