Accueil > Forum > > > > Comment retourner à une certaine ligne du code ?
Comment retourner à une certaine ligne du code ?
mercredi 25 novembre 2009 à 19:18:10 |
Comment retourner à une certaine ligne du code ?

BabyAzerty
|
Bonjour,
Je souhaiterai savoir comment retourner à un certain point du code ?
Par exemple :
Je lance un pendu (ou n'importe quel jeu)
Et lorsque je perds, j'affiche un menu avec (1) Retour au menu ou (2) Quitter le jeu.
Je pensais faire un switch (menu_perdu)
Puis avec case 2 : Exit(0);
Mais pour case 1: Je mets quoi pour retourner au début du jeu ??
Merci d'avance
|
|
mercredi 25 novembre 2009 à 21:23:16 |
Re : Comment retourner à une certaine ligne du code ?

BruNews
|
Le plus direct est un goto.
ciao...
BruNews, MVP VC++
|
|
mercredi 25 novembre 2009 à 21:44:34 |
Re : Comment retourner à une certaine ligne du code ?

TychoBrahe
|
Salut,
Le plus direct est un goto.
C'est également le chemin le plus direct vers les bugs mystiques, les prises de têtes, le code moche, incompréhensible et impossible à débugger. Lorsque l'on a fait un vrai bon découpage fonctionnel on ne doit même pas être amené à se poser la question initiale de ce sujet.
|
|
mercredi 25 novembre 2009 à 23:07:50 |
Re : Comment retourner à une certaine ligne du code ?

BruNews
|
Je connais cette rengaine et je l'attendais.
ciao...
BruNews, MVP VC++
|
|
jeudi 26 novembre 2009 à 00:17:17 |
Re : Comment retourner à une certaine ligne du code ?

CptPingu
|
goto fait partie du langage et est très pratique si utilisé avec parcimonie et intelligence.
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.
Code C/C++ :
int 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;
}
|
|
jeudi 26 novembre 2009 à 13:55:38 |
Re : Comment retourner à une certaine ligne du code ?

BabyAzerty
|
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ù :
Code C/C++ : //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;
}
(J'ai pas encore programmé le jeu, mais juste le menu et la mise en place)
|
|
jeudi 26 novembre 2009 à 14:21:59 |
Re : Comment retourner à une certaine ligne du code ?

CptPingu
|
Goto est à proscrire ? Tant pis ...
Dans 95% des cas, oui !
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ù :
Ne confond pas le mot clé goto et ta fonction gotoligcol, ce sont des deux choses différentes. Tu n'as pas de goto dans ton code.
|
|
jeudi 26 novembre 2009 à 16:18:33 |
Re : Comment retourner à une certaine ligne du code ?

BabyAzerty
|
Oui je sais que je n'ai pas de goto dans mon code, mais justement vers la fin du code j'ai écrit en Majuscule (commentaire) :
//ICI JE VOUDRAIS RETOURNER A L'AFFICHAGE DU MENU INITIAL
En clair, je pensais utiliser un goto à cet endroit pour retourner au menu du départ.
Parce que je vois pas vraiment comment faire avec des boucles ...
|
|
jeudi 26 novembre 2009 à 16:25:54 |
Re : Comment retourner à une certaine ligne du code ?

CptPingu
|
Code C/C++ :
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 = ' ';
}
|
|
jeudi 26 novembre 2009 à 16:40:16 |
Re : Comment retourner à une certaine ligne du code ?

CptPingu
|
Réponse acceptée !
Attention, non testé et fait un peu à l'arrache(le découpage de code est à revoir, c'est juste pour te donner une idée de ce que tu devrais commencer à faire). Une fonction ne devrait pas excéder 25 lignes, et plus ton code est découpé en petite fonction, plus il est aisé à comprendre et à débugger.
Code C/C++ :
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;
}
|
|
Cette discussion est classée dans : menu, code, jeu, retourner, certaine
Répondre à ce message
Sujets en rapport avec ce message
Popup menu [ par garslouche ]
Bonjour,je voudrais créer un menu contextuel tout simple.J'ai créé un menu avec l'éditeur de VC++ et j'utilise la méthode OnContextMenu : void CTestme
Jeu de Mémoire [ par lacousine ]
Bonjour,je suis sur la conception d'un jeu de mémoire, qui consiste à trouver 2 cartes pareilles. Mon programme affiche 16 cartes, dont 8 trouvées au
icon sur menu (API win32) [ par youpiyoyo ]
bonjour a tous je cherche a mettre des icones(ou bmp) a coter du text dans un menusi kelk'1 a un petit bout de code ou une solution simple a me propos
recherche code source jeu de voiture [ par Arnaud16022 ]
hellodans le cadre d'un projet de jeu de type Vice City qui aboutira peut-etre hypotétiquement avec bcp de chance pas du tout dans environ 4 ans, je c
Menu dans dialogbox [ par algori ]
Bonjour,Voila, je cherche à mettre un menu dans ma dialog box du type Fichier Edition ...J'ai vu des exemples sur codes sources mais c'était sur des
menu et opengl [ par turie ]
J'ai commencé de faire un petit jeu en opengl en c++ via glut qui tourne. Maintenant j'aimerai y integrer un menu dans la meme fenetre, mais je ne s
CHCH CODE SOURCE C DU JEU BRIDGES [ par zeph ]
JE CHERCHE LE CODE SOURCE DU JEU BRIDGES :pour ceux qui savent pas, c un jeu ou on dispose d'un damier bleu rouge blanc.le but est pour chaque joueur
recherche code source [ par lfta ]
bonjour,c'est la première que je vous envoie,et j'aimerai bien avoir une réponse sur ma demande,enfaite j'ai besoin du code source en (pascal, ou C) d
Menu qui bloque l'application [ par SnOOpss ]
Bonjour j'ai une application directX en mode fenetré avec un menu et mon probleme c'est que si quelqu'un clique sur le menu ou affiche les options du
menu de jeu [ par crousti42 ]
Bonour tout le monde !!!Je souhaiterais pouvoir créer un menu semblable à ceux que l'on trouve dans les jeux d'aujourd'hui (nouvelle partie, charger p
Livres en rapport
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|