Problème avec d'appel de fonction

Résolu/Fermé
toufeux Messages postés 43 Date d'inscription vendredi 24 février 2017 Statut Membre Dernière intervention 28 novembre 2017 - Modifié le 26 mai 2017 à 12:57
mamiemando Messages postés 33201 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 juillet 2024 - 26 mai 2017 à 13:03
Bonjour,

J'ai coder un petit jeu de stratégie tour par tour en mode console. Le jeu s’arrête lorsque que
pays.gagne
renvoie
true
. Le menu d'un joueur est composé de 2 sous-menus (qui sont implémenté dans la même fonction void ).

Et voila mon problème :(. Le programme n'arrive pas à passer au joueur suivant il reste bloqué au sous menu "sélectionner".

Merci d'avance pour votre aide.

boucle de gestion :

while(bleu.gagne() == false || vert.gagne() == false)   //boucle affichage
    {
        system("cls");
        for(i=0; i<2; i++)
        {
            std::cout<< "bleu"<< std::endl;
            bleu.affichage_Bleu();
            bleu.gagne();
        }
        for (i=0; i<2;  i++)
        {
            std::cout<< "vert"<< std::endl;
            vert.affichage_Vert();
            vert.gagne();
        }


la fonction qui affiche le menu :

void jeux::affichage_Bleu()
{
    int choix(0);
    for(;;)
    {
        system("cls");
        gotoxy(1,1); std::cout<< "pays :"<< bleu.m_Pays<< " president :"<< bleu.m_President;
        gotoxy(2,3); std::cout<< "1/ Armee."<< std::endl;
        gotoxy(2,4); std::cout<< "2/ Politique."<< std::endl;
        gotoxy(2,5); std::cout<< "3/ Passer son tour."<< std::endl;
        gotoxy(2,6); std::cout<< "choix :"; std::cin>> choix;

        switch(choix)
        {
        case 1:
        for(;;)
        {
            system("cls");
            gotoxy(1,1); std::cout<< "pays :"<< bleu.m_Pays<< " president :"<< bleu.m_President;
            gotoxy(1,3); std::cout<< "1/ Attaquer"<< std::endl;
            gotoxy(1,4); std::cout<< "2/ Former des troupes"<< std::endl;
            gotoxy(1,5); std::cout<< "choix :"; std::cin>> choix;

            switch(choix)
            {
                case 1: bleu.moins_troupe(vert);
                break;
                case 2: bleu.plus_troupe();
                break;
                default: std::cout<< "Erreur... votre doigt a peut-etre glisser"<< std::endl;
                break;
            }
        }
            break;
        case 2:
            for(;;)
            {
                system("cls");
                gotoxy(1,1); std::cout<< "pays :"<< bleu.m_Pays<< " president :"<< bleu.m_President;
                gotoxy(1,3); std::cout<< "1/ Conference sur le desarmement"<< std::endl;
                gotoxy(1,4); std::cout<< "2/ liberer les prisoniers"<< std::endl;
                gotoxy(1,5); std::cout<< "choix :"; std::cin>> choix;

                switch(choix)
                {
                    case 1: bleu.desarmement(vert);
                    break;
                    case 2: bleu.liberer_prison(vert);
                    break;
                    default: std::cout<< "Erreur... votre doigt a peut-etre glisser"<< std::endl;
                    break;
                }
            }
            break;
        case 3: // +2
            break;
            default: std::cout<< "Erreur... votre doigt a peut-etre glisser."<< std::endl;
        }
    }
}

1 réponse

mamiemando Messages postés 33201 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 juillet 2024 7 763
26 mai 2017 à 13:03
Bonjour,

Merci de soigner l'orthographe.

Pour faire court, dans
jeux::affichage_Bleu()
, tes boucles
for(;;)
ne peuvent jamais être interrompues, puisqu'elles ne contiennent pas de
break
.

Ces boucles devraient plutôt être dans ce genre :

for (;;) {
  ...
  if (...) {
      break;
  }
  ...
}


Bonne chance