void menu() { //Affichage du menu while (kbhit()) getch(); /* Vide le buffeur */ gotoligcol(4,0); puts("Choix du niveau de difficulte"); gotoligcol(6,0); puts("Niveau 1 : Facile (1)"); gotoligcol(7,0); puts("Niveau 2 : Difficile (2)"); gotoligcol(8,0); puts("Quitter le jeu (q)"); } int game_easy() { /*Blabla à coups de gotoligcol, printf */ //Compte à rebourd temps_max=15; do { pause=getch(); //Démarrage sur appuie de la barre d'espace //Progammation du jeu (Un Pendu) /* Blabla */ for(temps=0;temps<=temps_max;temps++) //Debut du décompteur { gotoligcol(20,17); printf("%d",temps_max-temps); Sleep(1000); if(temps>=5) //Bipage si temps<=10 { gotoligcol(20,18); puts(" \a"); } if(temps==temps_max) //Affichage du Game Over si temps=0 { /* Affichage Game Over */ while (kbhit()) getch(); //Vide le buffeur gotoligcol(17,2); //Choix retour menu ou fin du jeu puts("Retour au menu (1)"); gotoligcol(18,2); puts("Quitter le jeu (2)"); choix_gameover=getch(); switch (choix_gameover) { case 1: //Quitter le jeu /*Blabla */ exit (1); case 2: //ICI JE VOUDRAIS RETOURNER A L'AFFICHAGE DU MENU INITIAL return 1; } } } }while(pause!=' '); return 0; } int launch_game() { while (error_menu==0) /*Ignore la saisie si mauvais choix effectué (j'ai déclaré error_menu=0) */ { niveau=getch(); switch (niveau) /*Si Saisie correcte */ { case'1': return game_easy(); case '2': /* Blabla : return game_medium() */ break; case 'q': /* Blabla : return game_hard() */ break; default: error_menu=0; } } return 0; } int main() { //Déclaration des ressources /* blabla */ //Affichage d'une bannière de bienvenue (qui reste afficher pendant toute la durée du programme avec la fonction gotoligcol) /* blabla */ int result = 1; while (result != 0) { menu(); result = launch_game(); } return 0; }
Le plus direct est un goto.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionint main(void) { int cont = 1; int menu_perdu = 0; while (cont) { scanf("%i", &menu_perdu); switch (menu_perdu) { case 1: /* Plein de chose */ break; case 2: cont = 0; break; } } return 0; }
//Bibliothèque /* Blabla */ //Déclaration de la fonction gotoligcol /* blabla */ int main() { //Déclaration des ressources /* blabla */ //Affichage d'une bannière de bienvenue (qui reste afficher pendant toute la durée du programme avec la fonction gotoligcol) /* blabla */ //Affichage du menu while (kbhit()) getch(); /* Vide le buffeur */ gotoligcol(4,0); puts("Choix du niveau de difficulte"); gotoligcol(6,0); puts("Niveau 1 : Facile (1)"); gotoligcol(7,0); puts("Niveau 2 : Difficile (2)"); gotoligcol(8,0); puts("Quitter le jeu (q)"); while (error_menu==0) /*Ignore la saisie si mauvais choix effectué (j'ai déclaré error_menu=0) */ { niveau=getch(); switch (niveau) /*Si Saisie correcte */ { case'1': /*Blabla à coups de gotoligcol, printf */ //Compte à rebourd temps_max=15; do { pause=getch(); //Démarrage sur appuie de la barre d'espace //Progammation du jeu (Un Pendu) /* Blabla */ for(temps=0;temps<=temps_max;temps++) //Debut du décompteur { gotoligcol(20,17); printf("%d",temps_max-temps); Sleep(1000); if(temps>=5) //Bipage si temps<=10 { gotoligcol(20,18); puts(" \a"); } if(temps==temps_max) //Affichage du Game Over si temps=0 { /* Affichage Game Over */ while (kbhit()) getch(); //Vide le buffeur gotoligcol(17,2); //Choix retour menu ou fin du jeu puts("Retour au menu (1)"); gotoligcol(18,2); puts("Quitter le jeu (2)"); choix_gameover=getch(); switch (choix_gameover) { case 1: //Quitter le jeu /*Blabla */ case 2: //ICI JE VOUDRAIS RETOURNER A L'AFFICHAGE DU MENU INITIAL } } } }while(pause!=' '); break; case '2': /* Blabla */ break; case 'q': /* Blabla */ break; default:error_menu=0; } } return 0; }
Goto est à proscrire ? Tant pis ...
Mais si je comprends bien, si j'en viens à utiliser goto, ca veut dire que j'ai mal codé mon programme ? Possible ... Mais je ne vois pas où :
switch (choix_gameover) { case 1: //Quitter le jeu /*Blabla */ exit(1); case 2: //ICI JE VOUDRAIS RETOURNER A L'AFFICHAGE DU MENU INITIAL error_menu = 0; pause = ' '; }
Typiquement on est dans un cas ou:
- Le demandeur est un débutant, mieux vaut ne pas lui donner des outils dont il pourrait mal se servir. Il faut lui montrer cette fonctionnalité lorsqu'il aura de solide base.
- Il veut faire répéter un menu, donc un simple while suffit.
switch (choix_gameover) { case 1: //Quitter le jeu /*Blabla */ exit (1); case 2: //ICI JE VOUDRAIS RETOURNER A L'AFFICHAGE DU MENU INITIAL return 1; }
Le return 1 renvoie où ?
Et exit 1 renvoie où ?