PROBLEME MENU! EN Langage C
elayyy
-
xav3601 Messages postés 3289 Date d'inscription Statut Membre Dernière intervention -
xav3601 Messages postés 3289 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
j'ai un petit problème avec mon jeu, lorsque l'on commence à jouer, il y a un menu!Et ce menu on l'utilise une fois. Ensuite, y'a marqué tapez 1 pour retourner au menu, on tape 1 et on retourne au menu et la quand on fait un choix dans le menu, le programme se termine! J'ai revu mon programme sous tous les angles et rien n'y fait!
Donc je me tourne vers vous!
Voici le code source:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
int menu (void)
{
int choix=0;
printf ("\n***LE JEU DU NOMBRE MYSTERE***\n\n");
printf ("1.Jouer\n");
printf ("2.Lire les instructions\n");
printf ("3.Quitter\n\n");
printf ("entrez votre choix:\n");
scanf ("%d", &choix);
return choix;
}
int jeu ()
{
srand(time(NULL));
const int MAX = 100, MIN = 1;
int nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
int choix=0,tapez1=0;
do
{
printf ("\n\nEntrez le nombre mystere:\n\n");
scanf ("%d", &choix);
printf ("\n\n");
if (choix > nombreMystere)
{
printf ("Trop Grand!\n\n");
}
else if (choix < nombreMystere)
{
printf ("Trop Petit!\n\n");
}
else
{
printf ("Bravo, vous avez trouve le nombre mystere!\n\n");
}
}
while (choix != nombreMystere);
printf ("pour retourner au menu tapez 1:\n\n");
scanf ("%d", &tapez1);
if (tapez1 == 1)
{
return menu();
}
else
{
printf ("erreur!\n\n");
}
}
int main ()
{
int tapez1=0;
switch (menu())
{
case 1:
return jeu();
break;
case 2:
printf ("***LE JEU DU NOMBRE MYSTERE***\n\n");
printf ("Le but de ce jeu est de trouver le nombre que l'ordinateur a en memoire( entre 1 et 100).\n");
printf ("Bien sur, il faut le trouver avec le moins de coups possible.\n\n");
printf ("pour retourner au menu tapez 1\n");
scanf ("%d", &tapez1);
if (tapez1==1)
{
return menu();
}
else
{
printf ("erreur!\n\n");
}
break;
case 3:
return 0;
break;
default:
printf ("vous croyez tromper la machine??? Non, ce n'est pas possible,LA MACHINE EST PLUS FORTE QUE VOUS!!!\n\n\n");
return menu();
break;
}
}
En espérant que vous pourrez m'aider!
et en vous remerciant d'avance!
elayyy
j'ai un petit problème avec mon jeu, lorsque l'on commence à jouer, il y a un menu!Et ce menu on l'utilise une fois. Ensuite, y'a marqué tapez 1 pour retourner au menu, on tape 1 et on retourne au menu et la quand on fait un choix dans le menu, le programme se termine! J'ai revu mon programme sous tous les angles et rien n'y fait!
Donc je me tourne vers vous!
Voici le code source:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
int menu (void)
{
int choix=0;
printf ("\n***LE JEU DU NOMBRE MYSTERE***\n\n");
printf ("1.Jouer\n");
printf ("2.Lire les instructions\n");
printf ("3.Quitter\n\n");
printf ("entrez votre choix:\n");
scanf ("%d", &choix);
return choix;
}
int jeu ()
{
srand(time(NULL));
const int MAX = 100, MIN = 1;
int nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
int choix=0,tapez1=0;
do
{
printf ("\n\nEntrez le nombre mystere:\n\n");
scanf ("%d", &choix);
printf ("\n\n");
if (choix > nombreMystere)
{
printf ("Trop Grand!\n\n");
}
else if (choix < nombreMystere)
{
printf ("Trop Petit!\n\n");
}
else
{
printf ("Bravo, vous avez trouve le nombre mystere!\n\n");
}
}
while (choix != nombreMystere);
printf ("pour retourner au menu tapez 1:\n\n");
scanf ("%d", &tapez1);
if (tapez1 == 1)
{
return menu();
}
else
{
printf ("erreur!\n\n");
}
}
int main ()
{
int tapez1=0;
switch (menu())
{
case 1:
return jeu();
break;
case 2:
printf ("***LE JEU DU NOMBRE MYSTERE***\n\n");
printf ("Le but de ce jeu est de trouver le nombre que l'ordinateur a en memoire( entre 1 et 100).\n");
printf ("Bien sur, il faut le trouver avec le moins de coups possible.\n\n");
printf ("pour retourner au menu tapez 1\n");
scanf ("%d", &tapez1);
if (tapez1==1)
{
return menu();
}
else
{
printf ("erreur!\n\n");
}
break;
case 3:
return 0;
break;
default:
printf ("vous croyez tromper la machine??? Non, ce n'est pas possible,LA MACHINE EST PLUS FORTE QUE VOUS!!!\n\n\n");
return menu();
break;
}
}
En espérant que vous pourrez m'aider!
et en vous remerciant d'avance!
elayyy
A voir également:
- PROBLEME MENU! EN Langage C
- Langage ascii - Guide
- Menu déroulant excel - Guide
- Langage binaire - Guide
- Canon quick menu - Télécharger - Utilitaires
- Excel menu déroulant en cascade - Guide
6 réponses
A mon avis ton problème viens de là:
return menu();
et:
return jeu();
Si tu fais un return menu(), ca signifie que tu finis ton main!Donc une fois qu'il a fini menu() il n'as plus rien à faire.
Il faudrait modifier, dans ton main, tous les return menu() en menu() tout simple. Et de même pr les return jeu. Comme ca la seule possibilité pour finir ton jeu serait de taper 3 dans le menu, c'est ce que tu veux il me semble?
Et si je puis me permettre, il serait plus approprié d'utiliser la récursivité pour ta fonction jeu!
Tu aurais un code plus propre et plus simple ;)
return menu();
et:
return jeu();
Si tu fais un return menu(), ca signifie que tu finis ton main!Donc une fois qu'il a fini menu() il n'as plus rien à faire.
Il faudrait modifier, dans ton main, tous les return menu() en menu() tout simple. Et de même pr les return jeu. Comme ca la seule possibilité pour finir ton jeu serait de taper 3 dans le menu, c'est ce que tu veux il me semble?
Et si je puis me permettre, il serait plus approprié d'utiliser la récursivité pour ta fonction jeu!
Tu aurais un code plus propre et plus simple ;)
euh...Merci de ta réponse!
Mais c'est quoi la récursivité???
et pour enlever les return menu etc...
Il faut bien que je les remplace! Pourrais-tu m'expliquer tout ça s'il te plait?
Merci d'avance!
Mais c'est quoi la récursivité???
et pour enlever les return menu etc...
Il faut bien que je les remplace! Pourrais-tu m'expliquer tout ça s'il te plait?
Merci d'avance!
Ben je t'ai dis, dans ton main tu remplace:
return menu(); -> menu();
return jeu(); -> jeu();
La récursivité, si tu connais pas, c'est pas grave utilise le pas lol
Sinon fais des recherches sur le net un peu ;)
return menu(); -> menu();
return jeu(); -> jeu();
La récursivité, si tu connais pas, c'est pas grave utilise le pas lol
Sinon fais des recherches sur le net un peu ;)
Ok, j'ai déja regardé sur le Net...Il faut que je me prenne 1heure, c'est tout un cours!!!
Merci pour tes réponses!
à bientôt!
Merci pour tes réponses!
à bientôt!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
petit problème: J'ai suivi ce que tu m'a dit, cela ne marche toujour pas...
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
int menu (void)
{
int choix=0;
printf ("\n***LE JEU DU NOMBRE MYSTERE***\n\n");
printf ("1.Jouer\n");
printf ("2.Lire les instructions\n");
printf ("3.Quitter\n\n");
printf ("entrez votre choix:\n");
scanf ("%d", &choix);
return choix;
}
int jeu ()
{
srand(time(NULL));
const int MAX = 100, MIN = 1;
int nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
int choix=0,tapez1=0;
do
{
printf ("\n\nEntrez le nombre mystere:\n\n");
scanf ("%d", &choix);
printf ("\n\n");
if (choix > nombreMystere)
{
printf ("Trop Grand!\n\n");
}
else if (choix < nombreMystere)
{
printf ("Trop Petit!\n\n");
}
else
{
printf ("Bravo, vous avez trouve le nombre mystere!\n\n");
}
}
while (choix != nombreMystere);
printf ("pour retourner au menu tapez 1:\n\n");
scanf ("%d", &tapez1);
if (tapez1 == 1)
{
menu();
}
else
{
printf ("erreur!\n\n");
}
}
int main ()
{
int tapez1=0;
switch (menu())
{
case 1:
jeu();
break;
case 2:
printf ("***LE JEU DU NOMBRE MYSTERE***\n\n");
printf ("Le but de ce jeu est de trouver le nombre que l'ordinateur a en memoire( entre 1 et 100).\n");
printf ("Bien sur, il faut le trouver avec le moins de coups possible.\n\n");
printf ("pour retourner au menu tapez 1\n");
scanf ("%d", &tapez1);
if (tapez1==1)
{
menu();
}
else
{
printf ("erreur!\n\n");
}
break;
case 3:
0;
break;
default:
printf ("vous croyez tromper la machine??? Non, ce n'est pas possible,LA MACHINE EST PLUS FORTE QUE VOUS!!!\n\n\n");
menu();
break;
}
}
Alors docteur, c'est grave?
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
int menu (void)
{
int choix=0;
printf ("\n***LE JEU DU NOMBRE MYSTERE***\n\n");
printf ("1.Jouer\n");
printf ("2.Lire les instructions\n");
printf ("3.Quitter\n\n");
printf ("entrez votre choix:\n");
scanf ("%d", &choix);
return choix;
}
int jeu ()
{
srand(time(NULL));
const int MAX = 100, MIN = 1;
int nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
int choix=0,tapez1=0;
do
{
printf ("\n\nEntrez le nombre mystere:\n\n");
scanf ("%d", &choix);
printf ("\n\n");
if (choix > nombreMystere)
{
printf ("Trop Grand!\n\n");
}
else if (choix < nombreMystere)
{
printf ("Trop Petit!\n\n");
}
else
{
printf ("Bravo, vous avez trouve le nombre mystere!\n\n");
}
}
while (choix != nombreMystere);
printf ("pour retourner au menu tapez 1:\n\n");
scanf ("%d", &tapez1);
if (tapez1 == 1)
{
menu();
}
else
{
printf ("erreur!\n\n");
}
}
int main ()
{
int tapez1=0;
switch (menu())
{
case 1:
jeu();
break;
case 2:
printf ("***LE JEU DU NOMBRE MYSTERE***\n\n");
printf ("Le but de ce jeu est de trouver le nombre que l'ordinateur a en memoire( entre 1 et 100).\n");
printf ("Bien sur, il faut le trouver avec le moins de coups possible.\n\n");
printf ("pour retourner au menu tapez 1\n");
scanf ("%d", &tapez1);
if (tapez1==1)
{
menu();
}
else
{
printf ("erreur!\n\n");
}
break;
case 3:
0;
break;
default:
printf ("vous croyez tromper la machine??? Non, ce n'est pas possible,LA MACHINE EST PLUS FORTE QUE VOUS!!!\n\n\n");
menu();
break;
}
}
Alors docteur, c'est grave?