Boucle while saute une condition
Bonjour les experts,
Donc voilà, je suis débutant en langage c++ et j'ai un problème avec une boucle while que j'ai intégré dans une condition if.
Ce programme c'est quoi ?
Et bien c'est un mini ou plutôt micro jeu (pas en 3d ni en 2d) se déroulant dans une fenêtre Windows. L'utilisateur a une vie, des questions lui son posé, en fonction de ce que répond l'utilisateur (oui ou non), et bien sa vie varie. Quand il répond non, sa affiche : Vous avez répondu non et quand il répond oui : Vous avez répondu oui, il vous reste... tant de vie. Si il répond autre chose que oui ou que non, la question est reposé.
Alors voici le script complet :
Code:
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 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
| #include <iostream>
#include <string>
int vie(100); // déclaration de la variable global " vie "
using namespace std;
int addCoupPied()
{
int& Vie_CoupPied(vie); //la variable " Vie_CoupPied " se refere à la valeur de la variable global " vie "
int const coupPied(30);
cout << " Voulez-vous prendre un coup de pied ? " << endl;
string reponseUser;
cin >> reponseUser;
if(reponseUser == "oui")
{
Vie_CoupPied = Vie_CoupPied - coupPied;
cout << " Vous avez choisie oui, il vous reste desormait " << vie << " de vie " << endl;
}
else if(reponseUser == "non")
{
cout << " Vous avez choisie non " << endl;
}
else if(Vie_CoupPied <= 0)
{
cout << " Perdu, vous etes mort " << endl;
}
else
{
cout << " Reponse incorrect. Fin du programme. " << endl;
}
return Vie_CoupPied;
}
int addBouclier()
{
int& Vie_Bouclier(vie);
int bouclier(100);
cout << " Voulez-vous vous proteger a l'aide d'un bouclier ? oui ou non " << endl;
string reponseUser_2;
cin >> reponseUser_2;
if(reponseUser_2 == "oui")
{
Vie_Bouclier = Vie_Bouclier + bouclier;
cout << " Vous avez choisie oui, vous etes desormait equipe d'un bouclier ! niveau vie avec bouclier : " << vie << endl;
}
else if(reponseUser_2 == "non")
{
cout << " Vous avez choisie non. Vous n'etes pas proteger !" << endl;
}
else if(Vie_Bouclier <= 0)
{
cout << " Perdu. Vous etes mort " << endl;
}
else
{
while (reponseUser_2 != "oui" && reponseUser_2 != "non")
{
cout << " Voulez-vous vous proteger a l'aide d'un bouclier ? oui ou non " << endl;
cin >> reponseUser_2;
}
}
return Vie_Bouclier;
}
int explosionAtom()
{
int& Vie_Explosion(vie);
int explosion(95);
cout << " Attention explosion !" << endl;
Vie_Explosion = Vie_Explosion - explosion;
if(Vie_Explosion <= 0)
{
cout << " Perdu. Vous etes mort " << endl;
}
else
{
cout << " Vous avez ete touche ! Votre vie est desormait de " << Vie_Explosion << endl;
}
return Vie_Explosion;
}
int main ()
{
addCoupPied();
addBouclier();
explosionAtom();
return 0;
} |
Pour le moment j'ai intégré qu'une seule boucle while dans une condition if qui ce situe dans la fonction int addBouclier() (ligne 42).
Le problème est, quand le programme pose la question, on répond par oui ou par non la 1ère fois (donc la boucle n'intervient pas), si on répond oui sa affiche : Vous avez répondu oui. Il vous reste tant de vie.... Si on répond non sa affiche : Vous avez répondu non. Et le programme continue comme il se doit.
Quand la boucle intervient. La question est posé, je répond n'importe quoi, la question est donc reposé, et quand on répond normalement, si on répond oui sa n'affiche pas : Vous avez répondu oui, il vous reste tant de vie..... Quand on répond non, pareille sa n'affiche pas: Vous avez répondu non. Ce que sa fais, c'est que sa passe directement à la question suivante. Et ça, je n'aime pas, j'ai envie que mon programme soit parfait car je suis très perfectionniste, et le fait que sa fasse ça, me pose problème.
J'ai recherché des réponses sur le net, sans succès.
Je vous remercie d'avance pour votre précieuse aide.