IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

sortir d'une boucle infinie pour revenir dans une autre (ss-menu => menu)


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Mars 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 1
    Par défaut sortir d'une boucle infinie pour revenir dans une autre (ss-menu => menu)
    bonjour à tous,
    2



    je débute en programmation et je passe donc par le C.

    Je souhaite realiser un petit programme (un jeu) mais j'ai un probleme au niveau des boucles de mes menus.



    Dans mon 1ere boucle, j'ai mon menu, accompagné d'un switch pour que l'utilisateur choisissent son option.

    Dans ma seconde boucle (je suis obligé de créer une boucle pour mon jeu puisse "tourner", il y a un sous menu dans lequel j'aimerais que l'utilisateur puisse pouvoir revenir au menu principal (avec un getchar et un switch également)

    J'ai essayé pas mal de chose mais je n'y suis pas arrivé.

    un return me fait sortir du programme, j'ai tenté ici en essayant de remettre la valeur de la boucle à 0 en esperant que ca ne boucle plus, mais ca ne marche pas non plus.



    Je précise que je parle du case 'g' .

    Comme je vous ai dis, je débute, donc toutes les remarques sont bonnes à prendre concernant mon code.



    Merci d'avance



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     int main(void)
        { 
          char reponse, choix;
          char a, c;
          menu();
          do{
            reponse = getch();
            switch (reponse)
              {
                case 'x':
                  afficher(valeurs); 
                  int boucle=1;
                  while(boucle)
                    {
                      calculer(valeurs);
                      ch = getchar();
                      switch(ch) 
                        { 
                          case 't': verification();break;
                          case 'p':demandeEncore();break; 
                          case 'g': boucle=0;break;
     
                        }
                       }
                   break;
     
                case '2': break;
                case '3': SortieProgramme();break;
                default : retour_menu();break;
            }
        }while(saisie!='3');
     
     
    return 0;
    }

  2. #2
    Membre éclairé Avatar de c1702
    Homme Profil pro
    Inscrit en
    Mai 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 22
    Par défaut
    Bonjour,

    Citation Envoyé par fab936 Voir le message
    je suis obligé de créer une boucle pour mon jeu puisse "tourner" [...]
    Euh, non, tu n'es pas obligé. Le mieux serait de faire une fonction.

    Pour ton problème, tu ne nous as pas donné tous les éléments nécessaires.
    Par exemple, d'où sort la variable 'ch' ? Ou bien une fonction "retour_menu" depuis le "main" ?
    Tu utilises getchar et getch, est-ce normal ? (Au passage, il me semble qu'il faudrait vider le buffer clavier après le getchar, sinon tu vas avoir des surprises).

    Peux-tu poster soit ton programme complet, soit un code minimal reproduisant le problème ?

    Car normalement, ce que tu veux faire ne pose pas de problème. Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
     
    #include <stdio.h>
     
    int main(int argc, char **argv)
    {
    	printf("Boucle 1:\n");
    	char	ch1 = 0;
    	while (ch1 != 'x')
    	{
    		while ((ch1 = getchar()) == '\n');
    		scanf("%*[^\n]");
    		getchar();
    		switch (ch1)
    		{
    		case 'x':
    			printf("Sortie boucle 1\n");
    			break;
     
    		case 'l':
    			{
    				printf("\tBoucle 2:\n");
    				char	ch2 = 0;
    				while (ch2 != 'x')
    				{
    					while ((ch2 = getchar()) == '\n');
    					scanf("%*[^\n]");
    					getchar();
    					switch (ch2)
    					{
    					case 'x':
    						printf("\tSortie boucle 2\n");
    						break;
     
    					default:
    						printf("\tCaractere = %c\n", ch2);
    						break;
    					}
    				}
    			}
    			break;
     
    		default:
    			printf("Caractere = %c\n", ch1);
    			break;
    		}
    	}
     
    	return (0);
    }
    C'est du bricolage rapide, hein, en aucun cas un code avec saisie sécurisée à toute épreuve. Et comme je te le disais, le mieux serait sans doute de passer par une fonction.

    Clément.

  3. #3
    Membre très actif
    Inscrit en
    Janvier 2009
    Messages
    598
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 598
    Par défaut
    En gros, le principe, c'est une boucle qui fait tourner ton jeu mais en même temps qui teste les touches clavier, et quand la touche de sortie du jeu est détectée, ça sort stoppe la boucle, et ça affiche un menu.

    - debut boucle de jeu
    - calcul des positions des sprites
    - Test des touches clavier (déplacement, sortie menu etc...)
    - Affichage des sprites
    - Fin de la boucle

Discussions similaires

  1. Faire tourner un processus dans une boucle infinie
    Par mario002e dans le forum Applications et environnements graphiques
    Réponses: 2
    Dernier message: 19/02/2010, 15h30
  2. Réponses: 5
    Dernier message: 05/02/2010, 19h04
  3. Probleme dans une boucle while pour remplir une JTable
    Par sky88 dans le forum Composants
    Réponses: 3
    Dernier message: 27/03/2008, 14h01
  4. probleme pour rentrer dans une boucle
    Par tiya17 dans le forum C
    Réponses: 13
    Dernier message: 24/09/2007, 14h36
  5. [MySQL] récupérer dans une boucle chaque information MySQL dans une variable différente
    Par gtenthorey dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 06/05/2007, 22h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo