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

 C++ Discussion :

Réalisation d'un jeu mot mystere


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Lycéen
    Inscrit en
    Novembre 2009
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2009
    Messages : 67
    Par défaut Réalisation d'un jeu mot mystere
    Bonjour,
    Je réalise suite a un tuto un jeu mot mystere, un joueur tape un mot, le programme mélange les lettres, et le deuxieme joueur doit retrouver le mot.
    Mais j'ai deux problemes, une fois le programme terminé j'ai ajouté certaines fonctionnalités, j'ai ajouté un passage de ligne pour que le joueur 2 ne voit pas le mot donné par le joueur 1, un systeme pour rejouer une partie sans devoir relancer le programme, et un systeme d'essai (au bout de 3 essais, la partie s'arrete), seulement, ces fonctionnalités une par une semble fonctionné, mais mise toute ensemble et bien non ^^.
    De plus je chercherai un meilleur moyen de recommencer une partie, le seul moyen que j'ai trouvé c'est avec le nombre de caractere de la réponse (si elle est > a 2 (yes) alors on recommence, si elle est < 2 (no) alors le programme s'arrete.

    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
    #include <iostream>
    #include <string>
    #include <ctime> // Obligatoire
    #include <cstdlib> // Obligatoire
     
    using namespace std;
     
        string motDonner, motMelange, proposition, reponse, reponse2; // Variable du mot.
        int nbEssai(3);
        int essaiUser(0); // Variable du nombre d'essai maximum  // Essai du joueur (au début zero)
     
    string MelangerMot(string mot) // Fonction pour melanger le mot
    {
        srand(time(0)); // Activation des fonctionnalité aléatoire
        int pl; // Création de la variable qui contiendras la position des lettres
        string melange; // Variable du mot mélangé
     
     
        while(mot.size() != 0) // Tant que le mot donné contient encore des lettres
        {
            pl = rand() % mot.size(); // On prend une la position d'une lettre au hasard et on l'ajoute dans pl
            melange += mot[pl]; // On l'ajoute a la variable mélange
            mot.erase(pl,1); // Et enfin on supprime la lettre pour ne pas la prendre plusieurs fois
        }
     
        return melange; // Et voila le rendu final
    }
     
    int main()
    {
     
    do
    {
     
      // Premiere étape.
        essaiUser = 0;
        cout << "Au joueur 1 de taper un mot !" << endl;
        cin >> motDonner; // Le joueur 1 tape le mot qui sera stocké dans la variable motDonner.
        cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
     
     
      // Deuxieme étape.
            motMelange = MelangerMot(motDonner); // Application de la fonction dans la variable motmelange a partir du motdonner
     
     
      // Troisieme étape.
      /* Tant que le mot n'est pas trouvé (MotDonner), le programme se repete, une fois trouvé,
       message de felicitation suivis de la fin du programme.*/
     
     
        cout << "Voici le mot melange: " << motMelange << endl; // Affichage du mot mélangé
     
        for(;essaiUser<nbEssai && proposition != motDonner ;essaiUser++) // Tant que les essai du joueur ne dépasse pas les essais maximum (a savoir 3), et que le joueur
    	// ne donne pas la bonne réponse, alors on ajoute 1 a la variable essaiUser.
    {
        if(essaiUser != 0)
        {
        cout << "Ce n'est pas la bonne réponse, il te reste " << nbEssai - essaiUser << endl; //Si les essai du joueur sont different de zero, ce qui
    	// signifie qu'il s'est trompé au moins une fois, alors on affiche un message, ainsi que le nombre d'essai restant.
        cin >> proposition; // On lui donne ensuite la possibilité de donné une autre réponse.
        }
    }
     
    if(proposition == motDonner) // Si la proposition est égal au motdonne
        {
            cout << "Bravo, vous avez réussis" << endl; // Alors on l'informe que c'est terminé
            cout << "Souhaitez vous faire une autre partie ? Yes/No" << endl; // Proposition de réponse (en anglais :/)
            cin >> reponse2; // Choix du joueur
            proposition = "rien";
            essaiUser = 0;
        }
     
     
    if (essaiUser == nbEssai)
    {
    cout << "Tu n'as plus de chance ! La bonne réponse était: " << motDonner << endl; // Si les essais du joueur sont égal au nombre d'essai maxi
    // autrement dit 3, alors on lui dit qu'il a perdu, et on affiche la bonne réponse.
    essaiUser = 0;
    cin >> reponse; // Choix du joueur
     
    }
     
    }while(reponse.size() > 2 || reponse2.size() > 2); // Si la réponse possede + de 2 caractere alors la partie continue
     
    return 0;
    }

  2. #2
    Membre émérite

    Homme Profil pro
    Non disponible
    Inscrit en
    Décembre 2012
    Messages
    478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Non disponible

    Informations forums :
    Inscription : Décembre 2012
    Messages : 478
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    const int nbEssai(3);//Ceci ne sera pas modifiable donc rajouter const pour être sûr !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    cout << endl << endl << endl << endl << endl << endl....//Peut être plus clair en utilisant une fonction de string pour les caractère répeté =
    cout << string( (int NombreDeSautALaLigne) , '\n' );
    Sinon c'est ton organisation qui est vraiment chaotique, plutot que des "if if", utilise "if() else if(), else", les choses viendrons alors plus logiquement !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if(reponse == proposition) {
          if(essaiUser != 0) {
          } else {....
          }
    } else {
    }
    Après je n'ai pas tout vérifiée, mais pense à mettre les erreurs que te dit ton compilo, ou le erreurs que tu observes. Courage !

  3. #3
    Membre confirmé
    Profil pro
    Lycéen
    Inscrit en
    Novembre 2009
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2009
    Messages : 67
    Par défaut
    Salut et merci de ta réponse !

    Je n'ai pas encore appris les fonction de string, mais c'est la prochaine étape :pp. J'ai rajouter un const au NbEssai.

    Seulement pour les if. Je prend par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    if (essaiUser == nbEssai)
    // un else c'est égal a ca: ?
    if (essaiUser != nbEssai)
     
    if(proposition == motDonner) 
    // un else c'est égal a ca: ?
    if(proposition != motDonner)
     
    if(essaiUser != 0) 
    // un else c'est égal a ca: ?
    if(essaiUser == 0)
    Non ? Car ce n'est pas ce que je recherche, j'avoue être assez chaotique sur l'organisation (c'est mon tout premier programme :pp).
    Et aussi, dans ton exemple, ca ne marcherai pas je pense étant donné que la condition serait de trouver la bonne réponse, en n'ayant fait aucune erreur, donc si on se trompe une fois ca ne fonctionne pas.

  4. #4
    Membre émérite

    Homme Profil pro
    Non disponible
    Inscrit en
    Décembre 2012
    Messages
    478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Non disponible

    Informations forums :
    Inscription : Décembre 2012
    Messages : 478
    Billets dans le blog
    1
    Par défaut
    Ya presque rien à apprendre pour les strings -> http://www.cplusplus.com/reference/string/string/
    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
    string proposition;
    do {
            string motMelange("Pouet");
            proposition="";
            //Boucle des reponses
            for(int essaiUser(0); proposition != motMelange && essaiUser < nbEssai; essaiUser++) {
                    if(essaiUser != 0)
                           cout << "Ce n'est pas la bonne réponse, il te reste " << nbEssai - essaiUser << endl;
                    cin >> proposition;
            }
            //Phrase de sortie
            if(proposition == motMelange) {
                    cout << "Bravo, vous avez réussis" << endl;
            }else{
                    cout << "Tu n'as plus de chance ! La bonne réponse était: " << motMelange << endl;
            }
            //Choix autre partie
            while(proposition != "Yes" && proposition != "No") {
                    cout << "Souhaitez vous faire une autre partie ? Yes/No" << endl;//Peut etre y/n ou 1/0
                    cin >> proposition;
            }
    } while(proposition == "Yes");//boucle du programme
    En séparent bien tes boucle, en faisant attention à la tabulation, ca devient énormement plus facile ! Avec cette forme tu devrais trouver plus rapidement tes erreurs !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    if (essaiUser == nbEssai)
    // un else c'est égal a ca: ?
    if (essaiUser != nbEssai)
     
    if(proposition == motDonner) 
    // un else c'est égal a ca: ?
    if(proposition != motDonner)
     
    if(essaiUser != 0) 
    // un else c'est égal a ca: ?
    if(essaiUser == 0)
    "Non ?" Exact ! C'est juste que de les imbriquer peut éviter les répétitions et les erreurs.

  5. #5
    Membre confirmé
    Profil pro
    Lycéen
    Inscrit en
    Novembre 2009
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2009
    Messages : 67
    Par défaut
    Génial !

    Merci beaucoup , décidement ce programme m'aura fait reviser enormement de notions !

    Voilà mon nouveau code:
    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
    do
    {
     
      // Premiere étape.
        cout << "Au joueur 1 de taper un mot !" << endl;
        cin >> motDonner; // Le joueur 1 tape le mot qui sera stocké dans la variable motDonner.
        cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
     
     
      // Deuxieme étape.
            motMelange = MelangerMot(motDonner); // Application de la fonction dans la variable motmelange a partir du motdonner
     
     
      // Troisieme étape.
     
        cout << "Voici le mot melangé: " << motMelange << endl;
     
    //Tentative
        for(essaiUser; proposition != motDonner && essaiUser < nbEssai ; essaiUser++)
        {
            if(essaiUser != 0)
            cout << "Vous n'avez pas donne la bonne reponse, il vous reste " << nbEssai - essaiUser << " essai(s)" << endl;
            cin >> proposition;
        }
     
     
    //Demande de recommencer.
        if(proposition == motDonner)
        {
            cout << "Bien joué ! Souhaitez vous recommencez une partie ?" << endl;
            cin >> reponse;
        }
        if(essaiUser == nbEssai)
        {
            cout << "Vous avez perdu ! Vous voulez recommencer ?" << endl;
            cin >> reponse;
        }
     
     
    }while(reponse == "Oui"); // Si la réponse est oui alors ca continue
    Beaucoup plus clair que l'ancien, j'ai été obligé de mettre deux if de suite car le else n'aurait pas donné l'effet voulu.
    La je vais essayer de faire un systeme de score, des conseils ? ^^. Et ensuite je vais supprimer le joueur 1 pour mettre un ifstream(score.txt), encore une fois si tu as des conseils ca me ferais plaisir.

    En tout cas merci beaucoup !

  6. #6
    Membre émérite

    Homme Profil pro
    Non disponible
    Inscrit en
    Décembre 2012
    Messages
    478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Non disponible

    Informations forums :
    Inscription : Décembre 2012
    Messages : 478
    Billets dans le blog
    1
    Par défaut
    Pas de quoi !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    //Demande de recommencer.
        if(proposition == motDonner)
        {
            cout << "Bien joué ! Souhaitez vous recommencez une partie ?" << endl;
            cin >> reponse;
        }
        else
        {
            cout << "Vous avez perdu ! Vous voulez recommencer ?" << endl;
            cin >> reponse;
        }
    Et comme ça ?
    ( Tu veux forcement passer par l'étape recommencer, mettre un else évite toute sortie non prévue)

    Si tu veux écrire du texte pour enregistrer des données en mode console il y a effectivement ifstream, regarde même a fstream (plus complet), le forum traite pas mal le sujet et cplusplus.com donne les détails. Éclate toi !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. réalisation d'un jeu avec vb.net
    Par urculate dans le forum VB.NET
    Réponses: 4
    Dernier message: 24/02/2008, 20h22
  2. Réalisation d'un jeu 3D avec Director
    Par sab_etudianteBTS dans le forum Développement 2D, 3D et Jeux
    Réponses: 4
    Dernier message: 15/02/2008, 09h32
  3. Réalisation d'un jeu Mastermind
    Par cybercom dans le forum Pascal
    Réponses: 43
    Dernier message: 14/05/2006, 20h11
  4. [3D][Jeu]Réalisation d'un jeu avec java3D
    Par Janitrix dans le forum 3D
    Réponses: 2
    Dernier message: 22/04/2006, 23h22
  5. Réalisation d'un jeu de voiture 2D
    Par gege2mars dans le forum Algorithmes et structures de données
    Réponses: 10
    Dernier message: 10/01/2004, 22h40

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