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.
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
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;
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent