Une boucle dans un switch, comment faire ?

adrihag -  
 adrihag -
Bonjour,

Pour l'ecole j'ai un travail a rendre en C . il s'agit d'un pile ou face qui stocke les statistiques. On doit faire un menu pour :
1 jouer
2 reinitialiser les stats
3 voir les stat
4 arreter le prog

Voici mon code source :

#include <stdlib.h>
#include <stdio.h>
#include <time.h>

int main()
{
int choixmenu;
int pile_face;
int valeur_ordi;
int partie_jouee = 0;
int compteur_def = 0;
int compteur_vict = 0;
float pourcentage_vict = 0;
char encore='o';


printf("===LE JEU DU PILE OU FACE===\n\n");
printf("1. Jouer\n");
printf("2. Reinitialiser les statistiques\n");
printf("3. Consulter les statistiques\n");
printf("4. Quitter le jeu\n");
printf("Quel est votre choix ?");
scanf("%d", &choixmenu);

printf ("\n");

switch (choixmenu)

{	
	

	case 1:
	
			{	
		partie_jouee++;
		printf ("\nEntrez 1 pour pile ou 2 pour face:");

		scanf ("%d%*c",&pile_face);

		srand( time( NULL ) );
		valeur_ordi=(rand() % 2)+1;

		printf ("La piece est tombee sur : %d \n",valeur_ordi);
	if (pile_face == valeur_ordi)
{
		printf ("Vous avez gagne\n");
		compteur_vict = compteur_vict +1;
}
	else 
{
    printf ("Vous avez perdu\n");
    compteur_def = compteur_def +1;

}
{
printf("Jouer encore ? o / n?");
scanf("%c%*c",&encore);
}
break;

		}



	case 2:

		{
partie_jouee = 0;
compteur_def = 0;
compteur_vict = 0;
pourcentage_vict = 0;

printf("===STATS REMISES A ZERO===\n\n");
printf("1. Jouer\n");
printf("2. Reinitialiser les statistiques\n");
printf("3. Consulter les statistiques\n");
printf("4. Quitter le jeu\n");
printf("Quel est votre choix ?");
scanf("%d", &choixmenu);

		}



	case 3:
		{
printf("Voici vos statistiques\n\n");
printf("Parties jouees: %d\n\n",partie_jouee);
printf("Parties gagnees: %d\n\n",compteur_vict);
printf("Parties perdues: %d\n\n",compteur_def);
pourcentage_vict=(((float)compteur_vict/(float)partie_jouee)*100);
printf("Taux de reussite : %f \n\n", pourcentage_vict);

printf("===LE JEU DU PILE OU FACE===\n\n");
printf("1. Jouer\n");
printf("2. Reinitialiser les statistiques\n");
printf("3. Consulter les statistiques\n");
printf("4. Quitter le jeu\n");
printf("Quel est votre choix ?");
scanf("%d", &choixmenu);
break;
		}


	case 4:

		{
printf ("Merci d'avoir joue avec moi !");
getchar();
getchar();

return 0;
}

}
}


Le problème c'est que j'aimerais faire une boucle pour demander au joueur s'il veut rejouer. Si oui, le "case 1" recommence, si non, le menu switch s'affiche. Je n'y arrive pas ! J'ai besoin d'aide :)

Merci d'avance à tous les CCM'iens !

Bonne soirée

Adrien

3 réponses

  1. [Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention   1 108
     
    Salut adrihag,

    Je suppose que tu peux faire quelque chose comme cela :

        /* déclarer et initialiser les variables */ 
        choixmenu = 0; 
    
        while (choixmenu != 4) 
        { 
            switch (choixmenu) 
            { 
            case 1: 
                do 
                { 
                    encore = 'n'; 
                    /* faire 1 (jouer) */ 
                    /* demander si encore */ 
                } while (encore == 'o'); 
                choixmenu = 0; 
                break; 
            case 2: 
                /* faire 2 */ 
                choixmenu = 0; 
                break; 
            case 3: 
                /* faire 3 */ 
                choixmenu = 0; 
                break; 
            case 4: 
                /* faire 4 (quitter) */ 
                return 0; 
                break; 
            default: 
                /* par défaut, afficher le menu et (re)demander choixmenu */ 
                break; 
            } 
        } 
        return 0;

    Donc, tu mets cela dans un while, le menu général dans le défaut du switch, et tu mets dans le case 1 un do / while pour répéter le jeu tant que l'utilisateur n'est pas fatigué.

    Dal
    1
  2. totodunet Messages postés 1513 Statut Membre 201
     
    donc si je comprend bien :
    il faut que tu initialises au début une variable de type char avec
    char oui = 'o' par exemple
    puis tant que char=='o' -> j'exécute case1
    sinon -> menu switch

    ça donnerait un truc de ce genre :

    char oui = 'o';
    while (oui=='o')
    {
    case 1;
    oui = (le scanner pour que l'utilisateur entre sa oui ou non réponse)
    }
    affichage du menu switch

    dsl je connais pas bien le C, j'utilise java mais ça y ressemble
    0
  3. adrihag
     
    Merci beaucoup DAL !
    Je vais essayer tout ca mais la apres trois heures a chercher j'ai des accolades et des printf qui me sortent un peu par tous les trous .. hum hum..
    Je tiens tout le monde au courant si ca marche ! Merci de votre aide rapide et de qualité :) !

    Adrien
    0