begin process at 2012 05 28 21:46:07
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Débutant(e)

 > 

Comment retourner à une certaine ligne du code ?


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

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

Administrateur CodeS-SourceS
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

Administrateur CodeS-SourceS
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

Administrateur CodeS-SourceS
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

Administrateur CodeS-SourceS

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

Administrateur CodeS-SourceS
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

Administrateur CodeS-SourceS
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;
}

1 2

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


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,905 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales