C++ besoin d'aide mode console

Under -  
 Under -
Bonjour, ami internaute, et programmeur. Voilà aujourd'hui suivent un tutoriel de programmation en C++, le cours porté sur un [TP], Le mot Mystère, le principe est simple, l'ordinateur transforme un mot donner / entrer soit par un dictionnaire soit par une autre personne et inverse les lettre. ( exemple : Pour, oPur ) ... Tout marche très bien, sauf que j'ai décidé de faire le mode un joueur, donc avec utilisation d'un dictionnaire. Mais voilà mon problème je n'arrive pas à faire choisir à l'ordinateur aléatoirement un mot dans le dictionnaire.txt
Voici mon code :

#include <iostream>
#include <string>
#include <fstream>
#include <ctime>
#include <cstdlib>

using namespace std;

string melangeLettres(string mot) //Fonction qui mélange les lettres.
{
string melange;
int position(0);

while(mot.size() != 0)
{
position = rand() % mot.size();

melange += mot[position];

mot.erase(position, 1);
}

return melange;
}

int main()
{
string motMystere;
string motUtilisateur;
string motMelanger;
int choix(0);

cout <<" * MENU *" << endl << endl;
cout << " 1 - Un joueur." << endl;
cout << " 2 - Deux joueurs" << endl << endl;
cout << "Choisissez le nombre de joueur que vous etes : ( Respectez la syntaxe 1 ou 2. )" << endl;
cin >> choix;

if (choix == 2)
{
cout << endl << "Vous avez choisis le mode '' Deux joueurs ''."<< endl;
cout << endl << "Joueur 1, saisissez un mot : ";
cin >> motMystere;

cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl<< endl << endl;
cout << endl << endl << endl << endl << endl << endl;

cout << endl << endl;
cout << "Joueur 2, quel est ce mot : '' ";
}

else if(choix == 1 )//ICI le probléme!!!
{
string ligne;
int choixLigne(0);
int lignes (0);

ifstream dictionnaire("C:/Users/Lucas/Desktop/C++/Mot Mystere/dico.txt");

while(getline(dictionnaire, ligne))
{
lignes++;
}
}

motMelanger = melangeLettres(motMystere);

do
{
cout << motMelanger << " '' ?" << endl;
cin >> motUtilisateur;

if(motUtilisateur == motMystere)
{
cout << endl << "Bravo! Vous avez trouve le mot!!!" << endl << endl;
}

else
{
cout << endl << "Ce n'est pas le mot mystere... Reessayez..!" << endl << endl;
}

}while(motUtilisateur != motMystere);

return 0;
}


Si vous n'arrivez pas à comprendre en ma façon de coder, veuillez me laisser un message pour que je donne des explications.
Merci d'avance de l'aide que vous m'apporterez. A bientôt, je l'espère.

A voir également:

2 réponses

Pacorabanix Messages postés 3248 Date d'inscription   Statut Membre Dernière intervention   663
 
salut

string ligne;
int choixLigne(0);
int lignes (0);

ifstream dictionnaire("C:/Users/Lucas/Desktop/C++/Mot Mystere/dico.txt");

while(getline(dictionnaire, ligne))
   {
      lignes++;
   }
} 


maintenant que tu as le nombre de lignes, il te faut créer un numéro de ligne au hasard, entre 0 et le nombre de lignes -1 (ou entre 1 et le nombre de lignes, au choix).
ça sera le numéro du mot.


ensuite tu refais le même genre de boucle, tu vas lire ce nombre de fois une ligne dans le fichier (il faut le remettre à zéro ! fermer et réouvrir, ou voir par exemple seekg() )


et ensuite la dernière ligne lu sera le mot que tu cherches, donc la variable ligne contiendra à ce moment le bon mot.
0
Pacorabanix Messages postés 3248 Date d'inscription   Statut Membre Dernière intervention   663
 
ps : sur le forum, pense à utiliser le bouton "code" à coté de gras / souligné / italique

comme ça c'est plus facile à lire, les espaces devant les mots restent.
0
Under
 
Bonsoir, Pacorabanix, déjà merci pour l'explication je vais essayer ça dessuite :) ! Et merci de m'avoir expliquer pour le code je ne savais pas, j'y penserai et je tiens aussi a m'excuser pour cette ignorance qui a du embêter :/.
Sinon j'aurais une seconde question, j'ai remarquer que ma fonction pour changer l'emplacement des lettres ne l'ai changer mais toujours dans le même ordre. ( Exemple Pour sera toujours égale a oPur ) Serai t'il possible d'ameliorer ça?
0
Pacorabanix Messages postés 3248 Date d'inscription   Statut Membre Dernière intervention   663
 
il faut utiliser la fonction srand() pour quel les nombres pseudo-aléatoires donnés par rand() ne soient pas les mêmes à chaque fois.
0
Under
 
Ok merci :)
0