Flag à l'intérieur d'un switch

thom.deltazone -  
mikebzh Messages postés 135 Statut Membre -
Bonjour,
Je developpe un programme en C++ avec SDL. J'ai un petit souci avec un switch. En effet je me sert d'un flag à l'intérieur d'un switch, qui va le commander. Voyez plutot le code :
int flag = 0;

switch(flag)
{

case 0 : /*!< Page d'accueil */
{
apply_surface( 0, 0, background, screen ); /*!< Affiche le fond */

if( B_Contenu.handle_events( gros_bouton ) ) flag = 1; // Bouton pour aller au case 1
if( B_PenseBete.handle_events( gros_bouton ) ) flag = 2; // Bouton pour aller au case 2 ...
if( B_ProgRepas.handle_events( gros_bouton ) ) flag = 3;
if( B_Recettes.handle_events( gros_bouton ) ) flag = 4;
if( B_Courses.handle_events( gros_bouton ) ) flag = 5;

B_Contenu.show( "Contenu", "du frigo" );
B_PenseBete.show( "Pense bete", "" );
B_ProgRepas.show( "Programmer", "un repas" );
B_Recettes.show( "Recettes", "de cuisine" );
B_Courses.show( "Courses", "en ligne" );

SDL_WM_SetCaption( "Accueil", NULL );
}break;

case 1 : /*!< Contenu du frigo */
{ ...

B_Contenu.handle_events renvoie un bool. Mon souci c'est que sur n'importe quel bouton que j'appuie, c'est toujours sur le dernier que j'ai déclaré que j'irai (ici case 5) Je m'arrache les cheveux (et j'en ai plus beaucoup) HELP !
Thom
A voir également:

1 réponse

mikebzh Messages postés 135 Statut Membre 28
 
Coucou,
Bizarre le fait de gérer un pseudo-menu dans le switch mais bon pourquoi pas ?
La logique serait sans doute de faire un truc du style

[code]
do
{
// page d'acceuil
// apply....
// choix bouton
//flag 1 ...... 5

switch(flag)
{
case 1:
break;
case 2:
break;
case 3:
break;
case 4:
break;
case 5:
break;
}
} while (flag != 0); //condition de fin 0 ou menu 5 etc...

//------------------------------------------------
ou alors

} while (flag == 1 || flag == 2 || flag == 3 ....)

ou encore

} while (sortie == true) // rajout d'une variable sortie dans le switch

[\code]
Qu'en penses-tu ?
0