IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage C++ Discussion :

Mot mystère en mode console


Sujet :

Langage C++

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2017
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Bénin

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2017
    Messages : 31
    Points : 27
    Points
    27
    Par défaut Mot mystère en mode console
    Salut, J'espère que vous vous portez bien j'ai un problème à résoudre mais je me suis planté depuis.
    En effet on nous avait demandé d'écrire un programme en C++ qui demande on joueur de deviner un mot qui est mélangé. Le jeu est constitué de deux modes le mode solo et multijoueur.
    Pour le mode solo on tire au hasard un mot enregistré dans un fichier puis on le mélange et on l’affiche en demandant au joueur de deviner le mot. Pour chaque mot le joueur à trois essais. On lui propose 5 mots au total à la fin du jeu on lui affiche son score total et on lui propose s'il veut continuer ou non.
    Pour le mode Multi-joueur les mots sont proposés maintenant par un des joueurs on affichera le gagnant à l'issue du jeu.

    APRES CELA ON NOUS PROPOSE DE MODIFIER LE JEU EN CE QUI SUIT:

    LANGAGE C++
    Le sujet de ce TP n'est pas très compliqué mais promet d'être amusant : nous allons mélanger les lettres d'un mot et demander à un joueur de retrouver le mot « mystère » qui se cache derrière ces lettres.

    1. Le jeu est constitué de deux modes : le mode Solo et celui Multi-joueurs.
    2. Chaque mode est constitué de trois niveaux : les niveaux débutants, intermédiaires et avancés. Pour chaque niveau proposez un nombre de lettre par mot : FACILE (4 lettres), INTERMÉDIAIRE (6 lettres) et DIFFICILE (8 lettres).
    3. Fixez un nombre maximal de coups pour trouver le mot mystère pour chaque niveau. Vous pouvez par exemple indiquer « Il vous reste 3 essais » et lorsque les 3 essais sont écoulés, le programme s'arrête en affichant la solution. Mais si le joueur gagne on lui demande s’il veut continuer ou non au niveau suivant. S’il perd on lui propose de recommencer ou non.

    4. Créer un fichier pour l’authentification, (pseudo et mot de passe à entrer et vérifié) pour chaque mode. On supposera qu’il n’y a pas de nouveau joueur (c’est-à-dire que l’authentification se fera juste pour des noms et pseudo enregistrés au préalable dans le fichier). Si le joueur était à un niveau et si son pseudo et nom sont corrects il continue le jeu au niveau arrêté.
    5. Piochez le mot dans un fichier-dictionnaire pour le mode 1 joueur.

    6. Compter les scores et affichez le gagnant en mode 2 joueurs pour chaque niveau.

    7. Proposez au joueur de faire une nouvelle partie.

    DEMARCHE

    Les étapes importantes du programme :
    1. Saisie du mot à deviner ;
    2. Mélange des lettres ;
    3. Boucle qui se répète tant que le mot mystère n'a pas été trouvé.
    4. Authentification du pseudo et mot de passe afin d’ouvrir une session.
    5. Débuter le jeu au niveau arrêter.
    6. Passer d’un niveau a un autre si le nombre de score fixé est atteint.
    7. Afficher le score après le nombre d’essai fixé pour chaque mot.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    #include <iostream>
    #include<fstream>
    #include<cstdlib>//fonctionnalité du nombre aléatoire
    #include<ctime>//fonctionnalité du nombre aléatoire
    #include<string>
     
     
    using namespace std;
    inline int nombreAleatoire(int nombreMax);
    inline string ChoisirMot();
    inline string MelangeMot(string motMystere);
     
     
    int main()
    {
        int menu=0;
        cout<<"*****Ce jeux devine le mot.****"<<endl;
        cout<<"1.SOLO"<<endl;
        cout<<"2.MULTIJOUEUR"<<endl;
        cout<<"Veuillez choisir une option :"<<endl;
        cin>>menu;
        int score=0;
        if(menu==1)
        {
            for(int j=0;j<5;j++)
            {
               string motmystere(""),NouveauMot("");//initialisation des variables motmystere && NouveauMot.
               motmystere = ChoisirMot();//Choix d'un mot mystere dans le fichier par appelle de fonction
               NouveauMot=MelangeMot(motmystere);//Melange du mot motmystere par Appele de fonction
               cout << NouveauMot<<endl;//Affichage a l'écran du nouveau mot choisis.
               string MotCache;//declaration de la var:MotCache mot Devineé  entrée par l'user
               cout<<"Quel est le mot cache ?"<<endl;
               cin>>MotCache;
               int i=2;
     
                if(MotCache != motmystere )
                    {
                        do
                        {
     
                            cout<<"Ce n'est pas le mot recommencer!!!"<<endl;
                            cin>>MotCache;
                            i--;
                        }while(MotCache != motmystere && i>0);
                        if(MotCache != motmystere)
                        {
                            cout<<"Ce n'est pas le mot, vous avez perdu."<<endl;
                        }
                        else
                        {
                            cout<<"Felicitation vous avez gagne!!!"<<endl;
                            score++;
                        }
                        }
                        else
                        {
            cout<<"Felicitation vous avez gagne!!!"<<endl;
          score++;
            }
        }
            cout<<"Votre score est de:"<<score<<"/5"<<endl;
            if(score==0)
            {
                cout<<"Oh lalal vous vous avez perdu la partie"<<endl;
            }
            else if (score >= 1 || score <= 3)
            {
                cout<<"Peu satisfaisant"<<endl;
            }
            else
            {
                cout<<"Bravo! Vous etes parfait"<<endl;
            }
        }
    /*--------------------------------------Fin du mode SOLO----------------------------------------------------------*/
     
     
       else if(menu==2)
        {
            int score1=0;
            string Nom1,Nom2,Mot1;//Déclaration des variables Nom des joeurs et mots entrée
            int k;//Compteur de boucle
            int  a=2;
            int b=2,h,score2=0;
            string NouveauMot3,Mot2;
            cout<<"Joueur1 entrez votre nom:"<<endl;
            cin>>Nom1;
            cout<<"Joueur2 entrez votre nom:"<<endl;
            cin>>Nom2;
     
            string NouveauMot2;//NouveauMot2 nouveau mot choisis.
                for(k=0;k<3;k++)
                {
                    cout<<"Veuillez entrer un mot:"<<Nom1<<endl;
                    cin>>Mot1;
                    NouveauMot2=MelangeMot(Mot1);//Melange du mot motmystere par Appele de fonction
                    cout << NouveauMot2<<endl;//Affichage a l'écran du nouveau mot choisis.
                    string MotCache2;//declaration de la var:MotCache mot Devineé  entrée par l'user
                    cout<<"Quel est le mot cache? "<<Nom2<<endl;
                    cin>>MotCache2;
                    if(MotCache2!=Mot1)
                    {
     
                         do
                        {
                            cout<<"Ce n'est pas le mot recommencer!"<<endl;
                            cin>>MotCache2;
                            a --;
                        }while(MotCache2!=Mot1 && a>0);
                        if(MotCache2!=Mot1)
                        {
                           cout<<"Ce n'est pas le mot,le mot etait:"<<Mot1<<endl;
                        }
     
                        else
                        {
     
                            cout<<"Felicitation vous avez gagne!!!"<<endl;
                            score1 ++;
                        }
     
                    }
                    else
                    {
                       cout<<"Felicitation vous avez gagne!!!"<<endl;
                       score1++;
                    }
     
                    }
                     cout<<"Votre score Total est:"<<score1<<"/3"<<endl;
     
            for(h=0;h<3;h++)
                {
                    cout<<"Veuillez entrer un mot: "<<Nom2<<endl;
                    cin>>Mot2;
                    NouveauMot3=MelangeMot(Mot2);//Melange du mot motmystere par Appele de fonction
                    cout << NouveauMot3<<endl;//Affichage a l'écran du nouveau mot choisis.
                    string MotCache3;//declaration de la var:MotCache mot Devineé  entrée par l'user
                    cout<<"Quel est le mot cache? "<<Nom1<<endl;
                    cin>>MotCache3;
     
    		if(MotCache3!=Mot2)
                    {
     
                         do
                        {
                            cout<<"Ce n'est pas le mot recommencer!"<<endl;
                            cin>>MotCache3;
                            b --;
                        }while(MotCache3!=Mot2 && b>0);
                        if(MotCache3!=Mot2)
                        {
                           cout<<"Ce n'est pas le mot,le mot etait:"<<Mot2<<endl;
                        }
     
                        else
                        {
                            cout<<"Felicitation vous avez gagne!!!"<<endl;
                            score2 ++;
                        }
     
                    }
                    else
                    {
                       cout<<"Felicitation vous avez gagne!!!"<<endl;
                       score2++;
                    }
     
                    }
                    cout<<"Votre score Total est: "<<score2<<"/3"<<endl;
                    if(score1>score2)
                    {
                        cout<<"Vous avez gagnez: "<<Nom2<<endl;
                    }
                    else if(score2>score1)
                    {
                        cout<<"Vous avez gagnez: "<<Nom1<<endl;
                    }
                    else
                    {
                        cout<<"Vous avez tous perdu :"<<Nom1<<"&&"<<Nom2<<endl;
                    }
        }
     
          else
            {
            cout<<"Erreur vous avez mal choisis!!!"<<endl;
            }
    return 0;
    }
     
     
    /*----------------------------------------Choix d'un numéro de MOT-----------------------------------*/
     
    inline int nombreAleatoire(int nombreMax)
    {
            srand(time(0));
            return (rand() % nombreMax);
    }
    /*--------------------------fonction pour choisir un mot dans le fichier------------------------------*/
    inline string ChoisirMot()
    {
        ifstream fichier("Mot_Jeu.txt",ios::in);
        string motLu;
        // "ouverture reussie"
        if (fichier)
        {
            int nombreMot=0, numMotChoisi=0;
            //Détermination du nombre de mots
            while(getline(fichier,motLu))
            {
              nombreMot++;
            }
            // On envoie le nombre de mot pour une séléction d'un numéro
            numMotChoisi = nombreAleatoire(nombreMot);
          //Une fois le numéro choisi on retourne au dédut du fichier
            fichier.clear();
            fichier.seekg(0,ios::beg);
            //on choisis un mot au hazard qui est stocké dans  motlu.
            while(numMotChoisi > 0 && getline(fichier,motLu))
            {
                numMotChoisi--;
            }
     
            fichier.close();  //fermeture du fichier
        }
        else
            cerr << "Erreur rencontree" << endl;    //echec de l'ouverture du fichier.
     return motLu;
    }
     
    /*---------------------------Fonction MelangeMot pour mélanger les letres du mot-----------------------------*/
     
    inline string MelangeMot(string motMystere)
    {
        srand(time(0));//initialisation de la géneration de nombres aléatoire.
        string melange;
        int position(0);
        while(motMystere.size()!=0)//Tant que la taille n'est pas encore egale a zero on pioche les lettres sans remise puis on les melange
        {
     
            position=rand()%motMystere.size();//Coix d'un mot à une pôsition
            melange+=motMystere[position];//Positionnement d'une lettre dans Mot_mystere
            motMystere.erase(position,1);//on retire la lettre du lettre mystere pour qu'elle ne soit plus retirer.
        }
        return melange;
    }
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 074
    Points : 12 120
    Points
    12 120
    Par défaut
    C'est quoi la question ?
    A part faire le travail à votre place ?

  3. #3
    Membre averti
    Avatar de smarlytomtom
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Novembre 2014
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2014
    Messages : 139
    Points : 373
    Points
    373
    Billets dans le blog
    1
    Par défaut
    Si vous devez le faire en C++ il faudrait déjà commencer par réfléchir à une organisation objet ! Pas compliqué vu que le travail est pré-mâché dans l’énoncé. Après clairement on peut/veut pas faire le travail à votre place (pas le but du forum).
    Je connais pas ton niveau en programmation mais c'est pas un sujet bien compliqué faut juste réfléchir et s'organiser pour répartir les tâches entre les différents membres.
    Reviens nous voir si tu bloques sur quelque chose, mais attention c'est mieux si tu viens avec des idées de résolutions ou des pistes de réflexion !

    Bonne chance dans la réalisation de ton TP !
    Thomas Gredin.
    Développeur Unity 3D/VR

    Mon site personnel : http://thomasgredin.com/fr
    Mon portfolio : http://thomasgredin.com/fr/portfolio

  4. #4
    Membre régulier Avatar de ekieki
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Avril 2014
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Avril 2014
    Messages : 34
    Points : 103
    Points
    103
    Par défaut
    Ce qui serait bien, ça serait des exercices avec une vraie démarche objet. Des classes qui assurent des services.

    Par exemple il pourrait y avoir une classe Authentificateur, dont le rôle est de vérifier (dans une base ? dans un fichier ? dans un annuaire ?) les infos de connexion

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    class Authentifier {
    public:
        bool authentify(const string &login, const string &password);
    }
    Un objet qui fournit des mots tirés au hasard, si il en reste

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    class WordSupplier {
    public:
        bool         hasNext();
        std::string next();
    }
    Un autre qui fait la logique du jeu

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    class GameLogic {
    public:
        GameLogic();
        vois setWord(const std::string & word);
        void check(const std::string & proposal);
        std::string getMessage();
        bool isOver();
    }
    et puis une interface (texte/graphique) qui fait tourner tout ça.

  5. #5
    Membre averti
    Avatar de smarlytomtom
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Novembre 2014
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2014
    Messages : 139
    Points : 373
    Points
    373
    Billets dans le blog
    1
    Par défaut
    Je pense que c'est la démarche de réflexion voulue pour l'exercice et le fait que le travail ne soit pas totalement pré-mâché est une bonne chose
    Thomas Gredin.
    Développeur Unity 3D/VR

    Mon site personnel : http://thomasgredin.com/fr
    Mon portfolio : http://thomasgredin.com/fr/portfolio

  6. #6
    Membre régulier Avatar de ekieki
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Avril 2014
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Avril 2014
    Messages : 34
    Points : 103
    Points
    103
    Par défaut
    J'ai plutot l'impression que la démarche, c'est "Tiens voila l'exo qu'on refile depuis 30 ans en Basic, pardon, en C, pardon, en C++".

  7. #7
    Membre averti
    Avatar de smarlytomtom
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Novembre 2014
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2014
    Messages : 139
    Points : 373
    Points
    373
    Billets dans le blog
    1
    Par défaut
    Je suis également d'accord sur ce point ! Seulement il pousse à la réflexion sur l'architecture ce qui est une bonne chose... On sait que l'exo n'est pas de première fraîcheur mais il ne faut pas s'arrêter la ! Surtout que le titre du topic n'est pas "discutons de la pertinence de mon exercice de TP"

    Tout au long de ma scolarité j'ai fait des exos qui étaient souvent (Tout le temps ?) plus vieux que moi... Mais à chaque fois, ou presque, j’apprenais quelque chose soit grâce au contenu de l'exercice soit en réalisant l'exercice ! De plus dans tous les cas la pratique est essentiel et il faut s'habituer à être mit en face de sujets pas toujours évident aux premiers abords et qui demandent une réflexion. Bien souvent les clients on seulement une vague idée de ce qu'ils veulent, c'est donc à nous de les amener vers le produit voulu. Tout ça se fait en discutant avec lui et en étant force de proposition. Dans un sujet comme ça on se retrouve dans ce cas. On nous donne des fonctionnalités clés et on doit faire le reste. Dans ce sens l'exercice a peut être 30 ans mais il est toujours d'actualité et est une excuse pour pratiquer
    Thomas Gredin.
    Développeur Unity 3D/VR

    Mon site personnel : http://thomasgredin.com/fr
    Mon portfolio : http://thomasgredin.com/fr/portfolio

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2017
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Bénin

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2017
    Messages : 31
    Points : 27
    Points
    27
    Par défaut Multijoueur terminé, problème pour le mode solo.
    Salut à tous j'ai pu trouver la solution pour le mode multijoueur.En effet j'ai créer un fichier ou j'ai enregistré au préalable le pseudo et mot de passe de 4 joueurs,puisque l'exercice à dit qu'on suppose que les joueurs se sont enregistré au préalable.
    Mon fichier texte comporte 8 lignes et sur chaque ligne nous avons respectivement le nom et le pseudo de chaque joueur.
    Bolog
    P6R6h
    Gayla
    32Uvs
    Lurgrod
    P8Ezhw39
    Tereth
    6Pc8uwt5
    voici le code source: veuillez à me voir s'il il y des amélioration à faire.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    322
    323
    324
    325
    326
    327
    328
    329
    330
    331
    332
    333
    334
    335
    336
    337
    338
    339
    340
    341
    342
    343
    344
    345
    346
    347
    348
    349
    350
    351
    352
    353
    354
    355
    356
    357
    358
    359
    360
    361
    362
    363
    364
    365
    366
    367
    #include <iostream>
    #include<fstream>
    #include<cstdlib>//fonctionnalité du nombre aléatoire
    #include<ctime>//fonctionnalité du nombre aléatoire
    #include<string>
    #include<cstring>
     
    using namespace std;
    inline string MelangeMot(string motMystere);
    inline void Le_Jeu(string mot,string mot_devine, int *score=NULL);
    void Menu();
    inline void Niveau_Debutant(string joueur1,string joueur2,int *NbreDePoint=NULL);
    inline void Niveau_Intermediaire(string joueur1,string joueur2,int *NbreDePoint2=NULL);
    inline void Niveau_Avance(string joueur1,string joueur2,int *NbreDePoint3=NULL);
     
    int main()
    {
        string Pseudo1, MotDePasse1, Pseudo2, MotDePasse2, ligne1, ligne2, ligne3, ligne4, equipe;
        cout<<"2.MULTIJOUEUR"<<endl;
        cout<<"Quel est votre equipe <EQUIPE1> ou <EQUIPE2> faite votre choix"<<endl; cin>>equipe;
        fstream fichier("Authentification.txt", ios :: in | ios :: out | ios :: app);
        if(fichier){
    /*----------------------------------------PARTIE DE l'EQUIPE1 SUITE AU CHOIX------------------------------------------------------*/
                if(equipe=="EQUIPE1"){
                    cout<<"***JOUEUR1***\n"; cout<<"Pseudo: "; cin>>Pseudo1; cout<<"Mot de passe: "; cin>>MotDePasse1;
        getline(fichier,ligne1);
        getline(fichier,ligne2);
        if(Pseudo1 != ligne1 || MotDePasse1 != ligne2){
            do{
                cout<<"Pseudo ou Mot de passe incorrecte! Veuillez recommencer."<<endl;
                cout<<"Pseudo: "; cin>>Pseudo1; cout<<"Mot de passe: "; cin>>MotDePasse1;
            }while(Pseudo1 != ligne1 || MotDePasse1 != ligne2);
            if(Pseudo1 == ligne1 && MotDePasse1== ligne2){
                cout<<"Pseudo et mot de passe correcte veuillez Patienter..."<<endl;
            }
        }
     
        else cout<<"Pseudo et mot de passe correcte veuillez Patienter..." <<endl;
     
        cout<<"***JOUEUR2***\n"; cout<<"Pseudo: "; cin>>Pseudo2; cout<<"Mot de passe: "; cin>>MotDePasse2;
        getline(fichier,ligne3);
        getline(fichier,ligne4);
        if(Pseudo2 != ligne3|| MotDePasse2 != ligne4){
            do{
                cout<<"Pseudo ou Mot de passe incorrecte! Veuillez recommencer."<<endl;
                cout<<"Pseudo: "; cin>>Pseudo2; cout<<"Mot de passe: "; cin>>MotDePasse2;
            }while(Pseudo2 != ligne3 || MotDePasse2 != ligne4);
            if(Pseudo2 == ligne3 && MotDePasse2 == ligne4){
                cout<<"Pseudo et mot de passe correcte."<<endl;
            }
        }
        else cout<<"Pseudo et mot de passe correcte." <<endl;
     
        fichier.clear();
        fichier.seekg(0, ios :: beg);
                Menu();  //Appel de la fonction menu pour l'affichage des niveaux.
                int choix; // Variable entière pour le stockage du choix.
                cin>>choix;//Lecture du choix.
                if(choix==1){
                        string rep;
                        do{
                                int point1(0),point2(0);
                                Niveau_Debutant(Pseudo1,Pseudo2,&point1);
                                Niveau_Debutant(Pseudo2,Pseudo1,&point2);
                                if(point1>point2){
                                    cout<<"Felicitation vous avez gagne, la partie! "<<Pseudo2;
                                }
                                else if(point2>point1){
                                    cout<<"Felicitation vous avez gagne, la partie! "<<Pseudo1;
                                }
                                else cout<<"Egalite partie nulle."<<endl;
                                cout<<"Voulez-vous recommencer?(oui/non)"<<endl;
                                cin>>rep;
                            }while(rep=="oui");
                            if(rep=="non"){
                                cout<<"Aurevoir!"<<endl;
                            }
     
                            }
                else if(choix==2){
                        string rep;
                        do{
                                int point1(0), point2(0);
                                Niveau_Intermediaire(Pseudo1,Pseudo2,&point1);
                                Niveau_Intermediaire(Pseudo2,Pseudo1,&point2);
                                if(point1>point2){
                                    cout<<"Felicitation vous avez gagne, la partie! "<<Pseudo2;
                                }
                                else if(point2>point1){
                                    cout<<"Felicitation vous avez gagne, la partie! "<<Pseudo1;
                                }
                                else cout<<"Egalite partie nulle."<<endl;
                                cout<<"Voulez-vous recommencer?(oui/non)"<<endl;
                                cin>>rep;
                         }while(rep=="oui");
                        if(rep=="non"){
                                cout<<"Aurevoir!"<<endl;
                            }
                                }
                else{
                        string rep;
                        do{
                                int point1(0), point2(0);
                                Niveau_Avance(Pseudo1,Pseudo2,&point1);
                                Niveau_Avance(Pseudo2,Pseudo1,&point2);
                                if(point1>point2){
                                    cout<<"Felicitation vous avez gagne, la partie! "<<Pseudo2;
                                }
                                else if(point2>point1){
                                    cout<<"Felicitation vous avez gagne, la partie! "<<Pseudo1;
                                }
                                else cout<<"Egalite partie nulle."<<endl;
                                cout<<"Voulez-vous recommencer?(oui/non)"<<endl;
                                cin>>rep;
                         }while(rep=="oui");
                            if(rep=="non"){
                                cout<<"Aurevoir!"<<endl;
                            }
                }
                }
     
     
     /*----------------------------------------PARTIE DE l'EQUIPE2 SUITE AU CHOIX------------------------------------------------------*/
                else if(equipe=="EQUIPE2"){
                        int i = 0 ;
                        string Pseudo3, MotDePasse3, Pseudo4, MotDePasse4, ligne5, ligne6, ligne7, ligne8;
                        cout<<"***JOUEUR1***\n"; cout<<"Pseudo: "; cin>>Pseudo3; cout<<"Mot de passe: "; cin>>MotDePasse3;
                        while( i<5 && getline( fichier, ligne5 )){
                            i++;
                            }
                            getline(fichier, ligne6);
        if(Pseudo3 != ligne5 || MotDePasse3 != ligne6){
            do{
                cout<<"Pseudo ou Mot de passe incorrecte! Veuillez recommencer."<<endl;
                cout<<"Pseudo: "; cin>>Pseudo3; cout<<"Mot de passe: "; cin>>MotDePasse3;
            }while(Pseudo3 != ligne5 || MotDePasse3 != ligne6);
            if(Pseudo3 == ligne5 && MotDePasse3 == ligne6){
                cout<<"Pseudo et mot de passe correcte veuillez Patienter..."<<endl;
            }
        }
        else cout<<"Pseudo et mot de passe correcte veuillez Patienter" <<endl;
     
        cout<<"***JOUEUR2***\n"; cout<<"Pseudo: "; cin>>Pseudo4; cout<<"Mot de passe: "; cin>>MotDePasse4;
        getline(fichier, ligne7);
        getline(fichier, ligne8);
     
        if(Pseudo4 != ligne7 || MotDePasse4 != ligne8){
            do{
                cout<<"Pseudo ou Mot de passe incorrecte! Veuillez recommencer."<<endl;
                cout<<"Pseudo: "; cin>>Pseudo4; cout<<"Mot de passe: "; cin>>MotDePasse4;
            }while(Pseudo4 != ligne7 || MotDePasse4 != ligne8);
            if(Pseudo4 == ligne7 && MotDePasse4 == ligne8){
                cout<<"Pseudo et mot de passe correcte."<<endl;
            }
        }
        else cout<<"Pseudo et mot de passe correcte." <<endl;
     
        fichier.clear();
        fichier.seekg(0, ios :: beg);
                Menu();  //Appel de la fonction menu pour l'affichage des niveaux.
                int choix; // Variable entière pour le stockage du choix.
                cin>>choix;//Lecture du choix.
                if(choix==1){
                        string rep;
                        do{
                                int point1(0),point2(0);
                                Niveau_Debutant(Pseudo3,Pseudo4,&point1);
                                Niveau_Debutant(Pseudo4,Pseudo3,&point2);
                                if(point1>point2){
                                    cout<<"Felicitation vous avez gagne, la partie! "<<Pseudo2;
                                }
                                else if(point2>point1){
                                    cout<<"Felicitation vous avez gagne, la partie! "<<Pseudo1;
                                }
                                else cout<<"Egalite partie nulle."<<endl;
                                cout<<"Voulez-vous recommencer?(oui/non)"<<endl;
                                cin>>rep;
                            }while(rep=="oui");
                            if(rep=="non"){
                                cout<<"Aurevoir!"<<endl;
                            }
     
                            }
                else if(choix==2){
                        string rep;
                        do{
                                int point1(0), point2(0);
                                Niveau_Intermediaire(Pseudo3,Pseudo4,&point1);
                                Niveau_Intermediaire(Pseudo4,Pseudo3,&point2);
                                if(point1>point2){
                                    cout<<"Felicitation vous avez gagne, la partie! "<<Pseudo2;
                                }
                                else if(point2>point1){
                                    cout<<"Felicitation vous avez gagne, la partie! "<<Pseudo1;
                                }
                                else cout<<"Egalite partie nulle."<<endl;
                                cout<<"Voulez-vous recommencer?(oui/non)"<<endl;
                                cin>>rep;
                            }while(rep=="oui");
                        if(rep=="non"){
                                cout<<"Aurevoir!"<<endl;
                            }
                                }
                else{
                        string rep;
                        do{
                                int point1(0), point2(0);
                                Niveau_Avance(Pseudo3,Pseudo4,&point1);
                                Niveau_Avance(Pseudo4,Pseudo3,&point2);
                                if(point1>point2){
                                    cout<<"Felicitation vous avez gagne, la partie! "<<Pseudo2;
                                }
                                else if(point2>point1){
                                    cout<<"Felicitation vous avez gagne, la partie! "<<Pseudo1;
                                }
                                else cout<<"Egalite partie nulle."<<endl;
                                cout<<"Voulez-vous recommencer?(oui/non)"<<endl;
                                cin>>rep;
                          }while(rep=="oui");
                            if(rep=="non"){
                                cout<<"Aurevoir!"<<endl;
                            }
                }
     
                fichier.close();
     
                }
     
                        }
                        else cout<<"Erreur survenu lors de l'ouverture de fichier"<<endl;
        return 0;
        }
     
     
     
     
    /*---------------------------FONCTION MelangeMot POUR MELANGER LES LETTRES D'UN MOT-----------------------------*/
    inline string MelangeMot(string motMystere){
        srand(time(0));//initialisation de la géneration de nombres aléatoire.
        string melange;
        int position(0);
        while(motMystere.size()!=0)//Tant que la taille n'est pas encore egale a zero on pioche les lettres sans remise puis on les melange
        {
     
            position=rand()%motMystere.size();//Choix d'un mot à une pôsition
            melange+=motMystere[position];//Positionnement d'une lettre dans Mot_mystere
            motMystere.erase(position,1);//on retire la lettre du lettre mystere pour qu'elle ne soit plus retirer.
        }
        return melange;
    }
    /*-----------------FONCTION lE_JEU POUR LE CONTROLE D'ERREURE ET L'AFFICHAGE DU RESULTAT--------------------*/
    inline void Le_Jeu(string mot,string mot_devine, int *score1){
        int a=2;
        if( mot_devine != mot){
     
            do{
                cout<<"Ce n'est pas le mot recommencer!"<<endl;
                cin>>mot_devine;
                a --;
            }while(mot_devine!=mot && a>0);
            if(mot_devine!=mot){
                cout<<"Ce n'est pas le mot,le mot etait:"<<mot<<endl;
            }
            else{
                cout<<"Felicitation vous avez gagne!!!"<<endl;
                *score1 +=1;
                cout<<"score="<<*score1<<endl;
            }
        }
                    else{
                       cout<<"Felicitation vous avez gagne!!!"<<endl;
                       *score1 +=1;
                       cout<<"score="<<*score1<<endl;
                    }
     
                    }
     
    /*--------------------------------------FONCTION MENU POUR L'AFFICHAGE DES NIVEAUX---------------------------------------*/
     void Menu(){
                cout<<"***[MENU PRINCIPALE]***"<<endl;
                cout<<"1.DEBUTANT(Mot de quatre lettres)"<<endl;
                cout<<"2.INTERMEDIAIRE(Mot de six lettres)"<<endl;
                cout<<"3.AVANCE(Mot de 8 lettre)"<<endl;
                cout<<"Faite votre choix."<<endl;
     }
     
    /*------------------------------------FONCTION Niveau_Debutant POUR LE DEROULEMENT D'UNE PARTIE DE NIVEAU DEBUTANT------------------------------------*/
    inline void Niveau_Debutant(string joueur1,string joueur2,int *NbreDePoint1){
     
                string MotMelanger1,MotDeviner1,Mot1;
                int score1 = 0;
     
                        for(int j=0;j<3;j++){
                                cout<<joueur1<<" Entrez un mot de quatre lettres a deviner"<<endl;
                                cin>>Mot1;
                            while(Mot1.size()!=4){
                                cout<<"La taille du mot n'est pas adequate, recommencer!"<<endl;
                                cin>>Mot1;
                            }
                        if(Mot1.size()==4){
                                cout<<"Mot valide!"<<endl;
                        }
                        MotMelanger1 = MelangeMot(Mot1);
                        cout<<MotMelanger1<<endl;
                        cout<<joueur2<<" Devinez le mot."<<endl;
                        cin>>MotDeviner1;
                        Le_Jeu(Mot1,MotDeviner1,&score1);//Appel de la fonction le_jeu.
                        }
                        cout<<joueur2<<" Votre score totale est: "<<score1<<"/3"<<endl;
                       *NbreDePoint1 = score1;
     
    }
     
     
    /*------------------------------------FONCTION Niveau_Intermediaire POUR LE DEROULEMENT D'UNE PARTIE DE NIVEAU DEBUTANT------------------------------------*/
    inline void Niveau_Intermediaire(string joueur1,string joueur2,int *NbreDePoint2){
     
                string MotMelanger1,MotDeviner1,Mot1;
                int score1 = 0;
     
                        for(int j=0;j<3;j++){
                                cout<<joueur1<<" Entrez un mot de six lettres a deviner"<<endl;
                                cin>>Mot1;
                            while(Mot1.size()!=6){
                                cout<<"La taille du mot n'est pas adequate, recommencer!"<<endl;
                                cin>>Mot1;
                            }
                        if(Mot1.size()==6){
                                cout<<"Mot valide!"<<endl;
                        }
                        MotMelanger1 = MelangeMot(Mot1);
                        cout<<MotMelanger1<<endl;
                        cout<<joueur2<<" Devinez le mot."<<endl;
                        cin>>MotDeviner1;
                        Le_Jeu(Mot1,MotDeviner1,&score1);//Appel de la fonction le_jeu.
                        }
                        cout<<joueur2<<" Votre score totale est: "<<score1<<"/3"<<endl;
                       *NbreDePoint2 = score1;
     
    }
     
    /*------------------------------------FONCTION Niveau_Avance POUR LE DEROULEMENT D'UNE PARTIE DE NIVEAU AVANCE------------------------------------*/
    inline void Niveau_Avance(string joueur1,string joueur2,int *NbreDePoint3){
     
                string MotMelanger1,MotDeviner1,Mot1;
                int score1 = 0;
     
                        for(int j=0;j<3;j++){
                                cout<<joueur1<<" Entrez un mot de huit lettres a deviner"<<endl;
                                cin>>Mot1;
                            while(Mot1.size()!=8){
                                cout<<"La taille du mot n'est pas adequate, recommencer!"<<endl;
                                cin>>Mot1;
                            }
                        if(Mot1.size()==8){
                                cout<<"Mot valide!"<<endl;
                        }
                        MotMelanger1 = MelangeMot(Mot1);
                        cout<<MotMelanger1<<endl;
                        cout<<joueur2<<" Devinez le mot."<<endl;
                        cin>>MotDeviner1;
                        Le_Jeu(Mot1,MotDeviner1,&score1);//Appel de la fonction le_jeu.
                        }
                        cout<<joueur2<<" Votre score totale est: "<<score1<<"/3"<<endl;
                       *NbreDePoint3 = score1;
     
    }
    J'ai toujours un problème au niveau du mode SOLO. Le mode solo consiste à demander au joueur d'entrée son pseudo et mot de passe qu'on vérifiera. Si ses infos sont correcte si oui, le jeu commence par le niveau débutant : on pioche au hasard un mot dans un fichier texte que l'on mélange au hasard et affiche au joueur pour qu'il devine. Lorsqu’il trouve tous les mots au niveau débutant il passe au niveau suivant et ainsi de suite.Mais lorsqu'il ne trouve pas il recommence.Lorsqu'il c'est arrête a un niveau donné s'il revient il pourra continuer.Mon problème est de savoir comment enregistré une partie pour chaque joueur afin qu'il puisse continuer la partie s'il elle est inachevé ou passer au niveau suivant s'il est achevé.Mais je ne maîtrise pas les Class.

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2017
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Bénin

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2017
    Messages : 31
    Points : 27
    Points
    27
    Par défaut Rechecher Cours sur Class
    J'aimerais savoir où est ce que je peux avoir un bon cours sur les class?.

  10. #10
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 074
    Points : 12 120
    Points
    12 120
    Par défaut
    Mon problème est de savoir comment enregistré une partie pour chaque joueur afin qu'il puisse continuer la partie s'il elle est inachevé ou passer au niveau suivant s'il est achevé.
    Sauvegarder/recharger le niveau/état d'avancement atteint par un "nom/pseudo" dans un fichier qui ressemble assez à celui des "nom/pseudo", par exemple.

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2017
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Bénin

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2017
    Messages : 31
    Points : 27
    Points
    27
    Par défaut Réponse Mal comprise
    Je n'ai pas bien compris la réponse vous demandez à ce je crée un autre fichier pour enregistrer la partie? svp soyez plus explicite et merci pour votre réponse.

  12. #12
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 074
    Points : 12 120
    Points
    12 120
    Par défaut
    vous demandez à ce je crée un autre fichier pour enregistrer la partie?
    Si vous vous en sentez capable, pourquoi pas.
    Mais c'est plus simple de juste sauvegarder la "progression" du joueur.
    Mettre la progression dans un fichier différent du fichier associant nom et pseudo permet de bien distinguer les 2 choses.

  13. #13
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2017
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Bénin

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2017
    Messages : 31
    Points : 27
    Points
    27
    Par défaut opérations dans un fichier
    Salut à tous j'aimerais savoir comment est ce que je peut ouvrir un fichier(contenant des noms et prénoms) vérifier si un mon et un prénom d'un individu x y figure après le lui avoir demander, dans le cas contraire lui demander de redonner son nom et prénom jusqu'à ce que ca soit juste.
    voici moi mon code qui marche lorsque les id sont correcte mais j'aimerais intégrer un contrôle de saisie lorsqu'il ne mettrai pas de bon id afin qu'i puisse recommencer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    #include <iostream>
    #include <string>
    #include <fstream>
     
    using namespace std;
     
    int main()
    {
        string Pseudo,MotDePasse,ligne_n;
        cout << "Hello world!" << endl;
        cout<<"entrez votre pseudo : ";
        cin>>Pseudo;
        cout<<"entrez votre mot de passe : ";
        cin>>MotDePasse;
        ifstream fichier("id.txt", ios :: in);
        if(fichier)
        {
                cout<<"Ouverture reussie"<<endl;
                while(getline(fichier,ligne_n) )
                {
                    if(ligne_n == Pseudo){
                            cout<<ligne_n<<endl;
                            cout<<"Nom correcte"<<endl;
                    }
     
     
                }
                fichier.clear();
                fichier.seekg(0, ios :: beg);
                while(getline(fichier,ligne_n))
                {
                    if( MotDePasse == ligne_n){
                        cout<<ligne_n<<endl;
                        cout<<"mot de passe correcte"<<endl;
                    }
     
                }
                fichier.clear();
                fichier.seekg(0, ios :: beg);
                fichier.close();
        }
        else cout<<"erreur rencontré lors de l'ouverure du fichier !!"<<endl;
        return 0;
    }

  14. #14
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 074
    Points : 12 120
    Points
    12 120
    Par défaut
    Vous embêtez pas. Lisez une seule fois le fichier et stockez son contenu dans des structures comme des std::map pour vous simplifier les recherches ultérieures.

Discussions similaires

  1. Mises à jour des paquetages en mode console
    Par Memnoch31 dans le forum Debian
    Réponses: 6
    Dernier message: 16/05/2004, 16h30
  2. Des couleurs en mode console
    Par davcha dans le forum MFC
    Réponses: 3
    Dernier message: 08/05/2004, 14h37
  3. Mode console par défaut
    Par sekiryou dans le forum Administration système
    Réponses: 5
    Dernier message: 05/03/2004, 06h38
  4. Mode console et MFC ??
    Par G3G3 dans le forum MFC
    Réponses: 7
    Dernier message: 20/02/2004, 17h49
  5. Editeur en mode console
    Par logramme dans le forum C
    Réponses: 5
    Dernier message: 11/06/2002, 13h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo