if (condition)
{
// Logique du while <= Si tu arrives ici, tu ne peux pas arriver dans le else qui est un "étage" plus haut
}
else
// Perdu
stop = false;
while (!stop)
{
// code métier
"Voulez-vous rejouez (y/n)"
Si 'n', stop = true;
}
"choisir mot à devenir"
tant que (essaie > 5)
{
"Demander mot au joueur"
Si identique, alors "bravo", fin de la boucle (avec le mot clé "break").
Sinon, --essaie, "mauvais mot".
}
En sortie de boucle, si essaie == 0, c'est qu'on a perdu.
(si on est sortie avant, alors essaie est forcément > 0, et donc on ne fait rien car on a déja du afficher un "bravo".)
#include <iostream> #include <string> int main() { bool stop = false; while (!stop) { std::cout << "Veuillez donner un mot : " << std::endl; std::string motUser; std::cin >> motUser; int essaie = 5; while (essaie > 0) { std::string motJoueur; std::cout << "Quel est ce mot ?" << std::endl; std::cin >> motJoueur; if (motUser == motJoueur) { std::cout << "Bravo" << std::endl; break; } else { --essaie; std::cout << "Ce n'est pas le mot il vous reste : " << essaie << " essaies." << std::endl; } } if (essaie == 0) std::cout << "PERDU le mot etait : " << motUser << std::endl; std::cout << "Voulez vous rejouer une partie ? (y/n)" << std::endl; char choixUser; std::cin >> choixUser; if (choixUser == 'n') stop = true; } return 0; }
std::cout << "toto" << std::endl << "titi" << std::endl; // pas besoin de remettre std::cout
Améliorer votre expérience CodeS-SourceS avec ce plugin:
http://codes-sources.commentcamarche.net/forum/affich-10000111-plugin-better-cs-2#cptpingu-signature
do
while(choixUser!='n')
Maintenant le prochaine étape créer une version 1 ou 2 joueurs.
If 1 player alors chercher avec un ifstream un mot au hasard dans un fichier dictionnaire.
et le bouquet final un score par partie (valeur de la variable essaie = nombres de points) stocker dans un vector pour faire une moyenne sur toute les parties jouer dans la session.
// Le mot à chercher est "voiture"
// <> représente une bonne lettre mal placée
// [] représente une bonne lettre bien placée
_ _ _ _ _ _ _
=> anxieux
anx<i><e><u>x
_ _ _ _ _ _ _
=> vaccine
[v]acc<i>n[e]
v _ _ _ _ _ e
=> veinure
[v]<e>[i]n[u][r][e]
v _ i _ u r e
=> voiture
[v][o][i][t][u][r][e]
v o i t u r e
=> Bravo!
Améliorer votre expérience CodeS-SourceS avec ce plugin:
http://codes-sources.commentcamarche.net/forum/affich-10000111-plugin-better-cs-2#cptpingu-signature
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question#include <iostream> #include <string> namespace { void searchWord(const std::string& motUser) { std::string motJoueur; int essaie = 5; while (essaie > 0 && motUser != motJoueur) { std::cout << "Quel est ce mot ?" << std::endl; std::cin >> motJoueur; if (motUser != motJoueur) { --essaie; std::cout << "Ce n'est pas le mot il vous reste : " << essaie << " essaies." << std::endl; } } if (essaie == 0) std::cout << "PERDU le mot etait : " << motUser << std::endl; else std::cout << "Bravo" << std::endl; } void play() { char choixUser; do { std::cout << "Veuillez donner un mot : " << std::endl; std::string motUser; std::cin >> motUser; searchWord(motUser); std::cout << "Voulez vous rejouer une partie ? (y/n)" << std::endl; std::cin >> choixUser; } while (choixUser == 'y'); } } int main() { play(); return 0; }
Améliorer votre expérience CodeS-SourceS avec ce plugin:
http://codes-sources.commentcamarche.net/forum/affich-10000111-plugin-better-cs-2#cptpingu-signature
#include <iostream>
#include <string>
#include <ctime>
#include <cstdlib>
#include <fstream>
//FAIRE TESTE GETLINE+IGNOREGETLINE
int main()
{
srand(time(0));
std::string motMystere,motDico;
std::ifstream fluxDico("C:/ExerciceC++motMystereLaurentK/dico.txt");
if(fluxDico)
{
//on verifie que le fichier est bien ouvert
int nbMotDico;
while(getline(fluxDico,motDico))//boucle calculant le nombre de mot de la base de donnée.
{
nbMotDico++;
}
int randMotDico;
randMotDico=rand()%nbMotDico;
fluxDico.seekg(0,std::ios::beg);//se replacer en debut de fichier
for (int i(0);i<randMotDico;i++)
{
getline(fluxDico,motMystere);
std::cout<<"Voici le mot : "<<motMystere<<" nombre de mot : "<<nbMotDico<<std::endl;
}
std::cout<<"numéro rand : "<<randMotDico<<std::endl;
}
else
{
std::cout<<"Le fichier ne c'est pas ouvert veuillez vérifier le chemin d'accès svp et le changer si necessaires"<<std::endl;
}
}
fluxdico>>motMystere
#include <fstream> #include <iostream> #include <algorithm> // Pour std::shuffle et std::random_shuffle #include <random> // Pour std::default_random_engine (C++11 seulement) #include <chrono> // Pour std::chrono::system_clock (C++11 seulement) bool loadDictionnary(const std::string& filename, std::vector<std::string>& dico) { std::ifstream file(filename.c_str()); if (!file) return false; std::string word; while (std::getline(file, word)) dico.push_back(word); // Si C++03 (bof ! Utilise du srand/rand en interne): std::random_shuffle(dico.begin(), dico.end()); // Si C++ moderne (mieux !): // unsigned seed = std::chrono::system_clock::now().time_since_epoch().count(); // std::shuffle(dico.begin(), dico.end(), std::default_random_engine(seed)); return true; } std::string nextWord(const std::vector<std::string>& dico, unsigned int& index) { std::string res = dico[index % dico.size()]; ++index; return res; // On pourrait juste faire dico[index], // mais si jamais index >= dico.size, on sera hors borne. Ce qui n'arrivera jamais avec le modulo. } int main() { std::vector<std::string> dico; if (!loadDictionnary("dico.txt", dico)) { std::cerr << "Can't load dico.txt!" << std::endl; return 1; } unsigned int index = 0; //do //{ // code... std::string motUser = nextWord(dico, index); // A chaque fois qu'on appelle nextWord(), on aura un nouveau mot au hasard. // searchWord(motUser); // code... //} while etc... return 0; }
Améliorer votre expérience CodeS-SourceS avec ce plugin:
http://codes-sources.commentcamarche.net/forum/affich-10000111-plugin-better-cs-2#cptpingu-signature
Améliorer votre expérience CodeS-SourceS avec ce plugin:
http://codes-sources.commentcamarche.net/forum/affich-10000111-plugin-better-cs-2#cptpingu-signature
#include <iostream>
#include <string>
#include <ctime>
#include <cstdlib>
#include <fstream>
std::string melangeLettres(std::string mot)
{
int position;
std::string motRecu;
while(mot.size()!=0)
{
position=rand()%mot.size();
motRecu+=mot[position];
mot.erase(position,1);
}
return motRecu;
}
int main()
{
srand(time(0));
std::string motMystere,motMelange,motUser,motDico;
std::ifstream fluxDico("C:\ExerciceC++motMystereLaurentK\dico");
if(fluxDico)
{
//on verifie que le fichier est bien ouvert
int nbMotDico=0;
while(getline(fluxDico,motDico))//boucle calculant le nombre de mot de la base de donnée.
{
nbMotDico++;
}
int randMotDico;
randMotDico=rand()%nbMotDico;
fluxDico.clear();//suppression du flag
fluxDico.seekg(0,std::ios::beg);//remise au debut du curseur
for (int i(0);i<randMotDico;i++)
{
getline(fluxDico,motMystere);
}
}
else
{
std::cout<<"Le fichier ne c'est pas ouvert veuillez vérifier le chemin d'accès svp et le changer si necessaires"<<std::endl;
}
//tester avec fluxDico>>mot mais le mot à chercher reste désespérement vide.
for(int i(0);i<45;i++)
{
std::cout<<std::endl;
}
motMelange=melangeLettres(motMystere);
char choisUser;
do
{
int essaies(5);
while(essaies>0)
{
std::cout<<"Quel est le mot : "<<motMelange<<std::endl;
std::cin>>motUser;
if(motUser==motMystere)
{
std::cout<<"Bravo"<<std::endl<<"Voules vous refaire une partie ? (y/n)"<<std::endl;
std::cin>>choisUser;
break;
}
else
{
--essaies;
std::cout<<"Ce n'est pas le mot il vous reste : "<<essaies<<" essaies"<<std::endl;
}
}
if(essaies==0)
{
std::cout<<"PERDU le mot est : "<<motMystere<<std::endl<<"Voules vous refaire une partie ? (y/n)"<<std::endl;
std::cin>>choisUser;
}
}while(choisUser!='n');
return 0;
}
std::ifstream fluxDico("C:\ExerciceC++motMystereLaurentK\dico"); if(fluxDico) { //on verifie que le fichier est bien ouvert int nbMotDico=0; while(getline(fluxDico,motDico))//boucle calculant le nombre de mot de la base de donnée. { nbMotDico++; } int randMotDico; randMotDico=rand()%nbMotDico; fluxDico.close(); fluxDico.open("C:\ExerciceC++motMystereLaurentK\dico"); for (int i(0);i<randMotDico;i++) { getline(fluxDico,motMystere); } } else { std::cout<<"Le fichier ne c'est pas ouvert veuillez vérifier le chemin d'accès svp et le changer si necessaires"<<std::endl; }
Améliorer votre expérience CodeS-SourceS avec ce plugin:
http://codes-sources.commentcamarche.net/forum/affich-10000111-plugin-better-cs-2#cptpingu-signature