Bibm@th

Forum de mathématiques - Bibm@th.net

Bienvenue dans les forums du site BibM@th, des forums où on dit Bonjour (Bonsoir), Merci, S'il vous plaît...

Vous n'êtes pas identifié(e).

#1 09-11-2014 19:19:55

Na17
Membre
Inscription : 09-11-2014
Messages : 8

Programmation jeu

Bonsoir,

S'il vous plait, pourriez vous m'indiquer comment puis je procéder à un remplacement des sous programmes par typedef (générique)
sans utiliser ni les structures ni les pointeurs. (langage c++) pour débutant.  Merci

 La roue de l' infortune se présente sous la forme d'une grille qui doit être remplie au fur et à mesure par des lettres, ce jeu nécessite 2 joueurs. Dans un premier temps, le premier joueur entre une phrase ou un mot dans la grille sans que le deuxième joueur voit ce qui est écrit. La phrase est enregistrée et ne doit plus être affichée sur l'écran. Dans un deuxième temps, le deuxième joueur propose des lettres parmi les 26 lettres de l'alphabet et si elles sont présentes dans la phrase enregistrée  elles doivent s'afficher sur l'écran et remplir les cases concernées. Une lettre ne peut être proposée qu'une  seule fois.
Le score diminue quand le joueur propose une lettre qui n'est pas présente dans la phrase, le score augmente quand le joueur trouve une lettre présente dans la phrase et réussi à remplir la case.

#include <iostream>


using namespace std;

void saisir_phrase_cachee()
 {


  char carac;
  cout << "entrez votre phrase lettre par lettre suivi de ENTER et finissez par 0   "<<"      "<<endl;
  do {

  cin>>carac;
     }
     while ( (carac)!= (?????));


 }

void affichage_alphabet()
{
    char alphabet[27]={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','\0'};
    cout<<"affichage de lalphabet"<<"       "<<endl;
    for (int i = 0; i < 27; i++)
    {

    cout << alphabet[i] << endl;
    }

}

int main()
{


    char choix;

    do
    {

        cout<<"     "<<endl;
        cout<<"     "<<endl;
        cout<<"     "<<endl;
        cout<<"     "<<endl;
        cout<<"BIENVENUE DANS LE JEU DE LA ROUE DE L'INFORTUNE"<< endl;
        cout<<"|        choix(1):Jouer                        |"<< endl;
        cout<<"|        choix(2):Options                      |"<< endl;
        cout<<"|        choix(3):Quitter                      |"<< endl;
        cout<<"     "<<endl;

        cin>>choix;

        switch   (choix)
        {


            case '1' :
                cout << "jouer" << endl;
                saisir_phrase_cachee();
                affichage_alphabet()
                ;
                break;

            case '2' :
                cout << "Options" << endl;
                break;

            case '3' :
                cout << "Au revoir !" << endl;
                break;

            default : cout<<"choix incorrect";
                break;
        }
    }
    while (choix != '3');

   cout<<"|--------terminer jeu--------------------------|"<<endl;

    return 0;
}
 

Hors ligne

#2 09-11-2014 23:11:28

Na17
Membre
Inscription : 09-11-2014
Messages : 8

Re : Programmation jeu

Bonsoir,


je me suis trompé de code du jeu  cité avant ....  , le code à mettre avec  le typedef  (générique) sans les structures ni les pointeurs,  est :

#include <iostream>
#include <string.h>
using namespace std;


char lettre_tapee_par_deuxieme_joueur;// lettre que le deuxieme joueur a tapé
int nbre_lettre_contenues_dans_phrase_cachee;
bool trouve_lettre_correcte_ou_pas=0; //on vérifie si la lettre tapée est correcte
char t_mot_tape_deuxieme_joueur_juste[30] ; // là  où le programme stocke les lettres tapées par le deuxième joueur quand cest juste

typedef char t_chaine40[41];// création d'un type de chaîne de caractéres car une chaîne de caractere n'est pas un caractere

 void efface_ecran_phrase_cachee ()// pas vraiment un effacement mais un décalage
{
     int i;
     for ( i = 0; i < 100; i++)
        cout<< "     "<<endl ;
}

void saisir_phrase (int & longueur_phrase,t_chaine40 & phrase )
   {
   cout << "   votre phrase suivi de ENTER   "<<"      "<<endl;

  cin>>phrase ; //sauver dans la table
         do  {

                    longueur_phrase++;

                          // compter le nbre de lettre
                 }

                while   (phrase[longueur_phrase]!='\0');
   }


void afficher_phrase (int  longueur_phrase,t_chaine40  phrase)
{
   int i;
   for (i=0;i<longueur_phrase;i++)
        cout<<" | " <<phrase[i] ;
   cout<<" | ";
}


char saisie_une_lettre ()
{
    char lettre;

    cout << "          Entrez, une lettre par lettre suivie de ENTER   "<<"      "<<endl;
    cin>>lettre;
    return lettre ;
}


//void verification(char lettre_tapee_par_deuxieme_joueur)
//{
//    for(i=0;i<longueur_phrase;i++)
//    {
//        if (lettre_tapee_par_deuxieme_joueur== phrase[i])
//            t_mot_tape_deuxieme_joueur_juste[i]=lettre_tapee_par_deuxieme_joueur;
//        trouve_lettre_correcte_ou_pas=1;
//        nbre_lettre_tapee_par_deuxieme_joueur++;
//
//    }
//}


int main()
{
    int lg=0; // déclaration de la variable ou stoquer la longueur  phrase
    char choix;
    char lettre_saisie;
    int nbre_lettre_trouvee=0;
    t_chaine40 phrase_cachee;
    t_chaine40 alphabet={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','\0'};

//    saisir_phrase(lg,phrase_cachee);

    //system(cls);
    efface_ecran_phrase_cachee();
    do
    {
        cout<<"     "<<endl;
        cout<<"     "<<endl;
        cout<<"     "<<endl;
        cout<<"     "<<endl;
        cout<<"BIENVENUE DANS LE JEU DE LA ROUE DE L'INFORTUNE"<< endl;
        cout<<"|        choix(1):Jouer                        |"<< endl;
        cout<<"|        choix(2):Options                      |"<< endl;
        cout<<"|        choix(3):Quitter                      |"<< endl;
        cout<<"|                                              |"<<endl;

        cin>>choix;

        switch   (choix)
        {

            case '1' :
                    cout << "                          jouer     " << endl;
                    saisir_phrase(lg,phrase_cachee);
                    //afficher_phrase (lg,phrase_cachee);
                    //afficher_phrase (26,alphabet);
                    while(nbre_lettre_trouvee < lg)  // verifie si la phrase est terminée
                    {
                        lettre_saisie = saisie_une_lettre ();// retourner une lettre tapée par le deuxième joueur,résultat du sous programme
                        efface_ecran_phrase_cachee ();
                        //verification(lettre_tapee_par_deuxieme_joueur);
                        afficher_phrase (lg,phrase_cachee);
                        cout << endl;

                    if  ( trouve_lettre_correcte_ou_pas == 0); // si lettre  n'appartient pas à la phrase
                         else  trouve_lettre_correcte_ou_pas = 0 ;//ça passe à 1 automatiquement donc on est obligé d'initialiser à 0
                     }

 break;
            case '2' :
                cout << "Options" << endl;
                break;

            case '3' :
                cout << "Au revoir !" << endl;
                break;

            default : cout<<"choix incorrect";
break;
      }
      break;
    }
    while (choix != '3');

 cout<<" "<<endl;
   cout<<"|---------------------------------------------------------|"<<endl;


    return 0;
}
 

Hors ligne

#3 10-11-2014 10:08:01

totomm
Membre
Inscription : 25-08-2011
Messages : 1 093

Re : Programmation jeu

Bonjour,

Pourquoi vouloir utiliser typedef ?
Après avoir créé de nouveaux types ?

Hors ligne

#4 10-11-2014 11:52:44

Na17
Membre
Inscription : 09-11-2014
Messages : 8

Re : Programmation jeu

Bonjour,

Merci de m'avoir répondu.

SVP c'est le deuxième envoi sur lequel je dois mettre le générique (typedef) sans les sous programmes structures ou pointeurs (demande de changement par le Prof.)

en langage C++   

Un sous prog générique est un sous programme que l'on peut réutiliser plusieurs fois pour différentes choses. Genre phrase que l'on peut l'utiliser pour l'alphabet ou bien la phrase cachée...

Merci d'avance de vouloir m'aider.

Hors ligne

#5 10-11-2014 21:09:54

Na17
Membre
Inscription : 09-11-2014
Messages : 8

Re : Programmation jeu

Bonsoir,

Personne ne veut m'aider svp ?

Hors ligne

#6 10-11-2014 22:53:33

totomm
Membre
Inscription : 25-08-2011
Messages : 1 093

Re : Programmation jeu

Bonsoir,

Je peux essayer de vous aider si j'arrive à bien comprendre ce que vous voulez.
votre programme se compile bien et s'exécute, mais il ne permet pas encore de jouer entièrement.
Il faudrait peut-être déjà un code qui fonctionne entièrement avant de l’améliorer...

Hors ligne

#7 11-11-2014 11:03:02

Na17
Membre
Inscription : 09-11-2014
Messages : 8

Re : Programmation jeu

Bonjour,

SVP  il faut mettre t_chaine40 phrase  en tant que paramètre du sous-programme void verification  de la ligne 68 à 75.


Merci

Hors ligne

#8 11-11-2014 11:53:59

totomm
Membre
Inscription : 25-08-2011
Messages : 1 093

Re : Programmation jeu

Bonjour,

Je crois commencer à comprendre :
Si vous devez reassembler les lettres entrées il vous faut une déclaration dans main()
par exemple :  t_chaine40 phrase_assemblee;
et la déclaration :
void verification(char lettre_tapee_par_deuxieme_joueur)
doit comporter 2 autres paramètres formels tel que "t_40chaine40 & phrase_temoin" et "t_40chaine40 & phrase_reconstituée"

donc, à chaque lettre entrée, vous appellerez vérification avec comme paramètres actualisés:
la lettre entrée,
la phrase entrée au début,
la phrase partiellement reconstituée (qui sera remplie aux bons endroits avec la lettre entrée...)

C'est le même mécanisme de déclaration et passage de paramètres que pour
void saisir_phrase (int & longueur_phrase,t_chaine40 & phrase )

Est-ce suffisant comme indications, dans le sens que vous voulez ?

Hors ligne

#9 11-11-2014 15:35:27

Na17
Membre
Inscription : 09-11-2014
Messages : 8

Re : Programmation jeu

Bonjour

Je vous remercie Totomm de votre réponse et de votre patience. J'ai rectifié comme vs me l'avais conseillé le code du jeu, en plus j'ai supprimé les sous programmes qui étaient en commentaires. je ne suis pas arrivé à compiler. Merci de bien vouloir m'aidez svp. ci dessous le code rectifié et que je n'arrive pas à compiler, il y a des erreurs



#include <iostream>
#include <string.h>
using namespace std;


typedef char t_chaine40[41];// création d'un type de chaîne de caractéres car une chaîne de caractere n'est pas un caractere


void saisir_phrase (int & longueur_phrase,t_chaine40 & phrase )
   {
   cout << "   votre phrase suivi de ENTER   "<<"      "<<endl;

  cin>>phrase ; //sauver dans la table
         do  {

                    longueur_phrase++;

                          // compter le nbre de lettre
                 }

                while   (phrase[longueur_phrase]!='\0');
   }


void afficher_phrase (int  longueur_phrase,t_chaine40  phrase)
{
   int i;
   for (i=0;i<longueur_phrase;i++)
        cout<<" | " <<phrase[i] ;
   cout<<" | ";
}


char saisie_une_lettre ()
{
    char lettre;

    cout << "          Entrez, une lettre par lettre suivie de ENTER   "<<"      "<<endl;
    cin>>lettre;
    return lettre ;
}


void verification(char lettre_tapee_par_deuxieme_joueur,t_chaine40 & phrase_temoin,t_chaine40 & t_chaine40 phrase_reconstituee)
  {
    for(i=0;i<lg;i++)
   {
        if (lettre_tapee_par_deuxieme_joueur== phrase[i])
            t_mot_tape_deuxieme_joueur_juste[i]=lettre_tapee_par_deuxieme_joueur;
        trouve_lettre_correcte_ou_pas=1;
        nbre_lettre_tapee_par_deuxieme_joueur++;

    }
 }


int main()
{
    int lg=0; // déclaration de la variable ou stoquer la longueur  phrase
    char choix;
    char lettre_saisie;
    int nbre_lettre_trouvee=0;
    t_chaine40 phrase_cachee;
    t_chaine40 alphabet={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','\0'};
    char lettre_tapee_par_deuxieme_joueur;// lettre que le deuxieme joueur a tapé
    t_chaine40  phrase_temoin;
    int nbre_lettre_contenues_dans_phrase_cachee;
    t_chaine40 phrase_reconstituee;
    bool trouve_lettre_correcte_ou_pas=0; //on vérifie si la lettre tapée est correcte
    char t_mot_tape_deuxieme_joueur_juste[30] ; // là  où le programme stocke les lettres tapées par le deuxième joueur quand cest juste

    saisir_phrase(lg,phrase_cachee);

     system("cls");

    do
    {
        cout<<"     "<<endl;
        cout<<"     "<<endl;
        cout<<"     "<<endl;
        cout<<"     "<<endl;
        cout<<"BIENVENUE DANS LE JEU DE LA ROUE DE L'INFORTUNE"<< endl;
        cout<<"|        choix(1):Jouer                        |"<< endl;
        cout<<"|        choix(2):Options                      |"<< endl;
        cout<<"|        choix(3):Quitter                      |"<< endl;
        cout<<"|                                              |"<<endl;

        cin>>choix;

        switch   (choix)
        {

            case '1' :
                    cout << "                          jouer     " << endl;
                    saisir_phrase(lg,phrase_cachee);
                    afficher_phrase (lg,phrase_cachee);
                    afficher_phrase (26,alphabet);
                    while(nbre_lettre_trouvee < lg)  // verifie si la phrase est terminée
                    {
                        lettre_saisie = saisie_une_lettre ();// retourner une lettre tapée par le deuxième joueur,résultat du sous programme
                        efface_ecran_phrase_cachee ();
                       verification(lettre_tapee_par_deuxieme_joueur,phrase_temoin,phrase_reconstituee);
                        afficher_phrase (lg,phrase_cachee);
                        cout << endl;

                    if  ( trouve_lettre_correcte_ou_pas == 0); // si lettre  n'appartient pas à la phrase
                         else  trouve_lettre_correcte_ou_pas = 0 ;//ça passe à 1 automatiquement donc on est obligé d'initialiser à 0
                     }

 break;
            case '2' :
                cout << "Options" << endl;
                break;

            case '3' :
                cout << "Au revoir !" << endl;
                break;

            default : cout<<"choix incorrect";
break;
      }
      break;
    }
    while (choix != '3');

 cout<<" "<<endl;
   cout<<"|---------------------------------------------------------|"<<endl;


    return 0;
}
 

Hors ligne

#10 11-11-2014 18:04:38

totomm
Membre
Inscription : 25-08-2011
Messages : 1 093

Re : Programmation jeu

bonsoir,

J'arrive à compiler mais j'ai mis des // dans vérification


void verification(char lettre_tapee_par_deuxieme_joueur,t_chaine40 & phrase_temoin,t_chaine40 &  phrase_reconstituee)
// enlevé une fois t_chaine40
{
//    for(i=0;i<lg;i++)
   {
//        if (lettre_tapee_par_deuxieme_joueur== phrase[i])
//            t_mot_tape_deuxieme_joueur_juste[i]=lettre_tapee_par_deuxieme_joueur;
//        trouve_lettre_correcte_ou_pas=1;
//        nbre_lettre_tapee_par_deuxieme_joueur++;
 
    }
 }

et devant //                        efface_ecran_phrase_cachee (); qui est appelé dans main()

Cependant je suis désolé, mais je ne peux entreprendre de corriger votre programme
Il faut compiler chaque fois que l'on a modifié en un petit endroit, et regarder quelles sont les erreurs de la génération.
Donc c'est petit à petit que vous devez avancer, en maitrisant vos ajouts et modifications....

Bonne suite

Hors ligne

#11 11-11-2014 21:02:41

Na17
Membre
Inscription : 09-11-2014
Messages : 8

Re : Programmation jeu

Bonsoir Tomtomm,

Merci de m'avoir aidé. je vais faire la suite.

Encore un grand merci à votre site

Hors ligne

#12 13-11-2014 13:32:20

Na17
Membre
Inscription : 09-11-2014
Messages : 8

Re : Programmation jeu

Bonjour ,

Concernant toujours le même jeu cité sur mon premier post. 

je vous prie de trouver ci-dessous le nouveau code modifié

Je rencontre des difficultés dans  : le sous-programme " verification " car il faut vérifier chacune des  lettres,
faire :  Un sous programme " initialiser  la phrase à afficher " (qui est la phrase correcte devinée par le deuxième utilisateur)
            Le sous-programme " saisie d'une lettre "
            Le sous-programme " modification " qui permet au départ de modifier  la phrase donnée par le premier joueur, de rendre chacune des  lettres  de la phrase par des"-" et ensuite quand le deuxième joueur met les lettres correctes alors la phrase s'affiche comme avant.

           Un sous-programme pour " gérer les scores " dans les options le sous-programme gérer les scores y sera.

Le score diminue quand le joueur propose une lettre qui n'est pas présente dans la phrase, le score augmente quand le joueur trouve une lettre présente dans la phrase et réussi à remplir la case.

Merci d'avance pour une éventuelle explication et aide.


#include <iostream>
#include <string.h>
#include <cstdlib>// bibliothèque ajoutée pour system

using namespace std;


typedef char t_chaine40[41];// création d'un type de chaîne de caractéres car une chaîne de caractere n'est pas un caractere


void saisir_phrase (int & longueur_phrase,t_chaine40 & phrase )
   {
   cout << "   votre phrase suivi de ENTER   "<<"      "<<endl;

  cin>>phrase ; //sauver dans la table
         do  {

                    longueur_phrase++;

                          // compter le nbre de lettre
              }

         while   (phrase[longueur_phrase]!='\0');
   }


void afficher_phrase (int  longueur_phrase,t_chaine40  phrase)
{
   int i;
   for (i=0;i<longueur_phrase;i++)
        cout<<" | " <<phrase[i] ;
   cout<<" | ";
}

void afficher_phrase_c (int  longueur_phrase,t_chaine40  phrase)
{
   int i;
   for (i=0;i<longueur_phrase;i++)
        cout<<" |_" <<phrase[i] ;
         cout<<"|";

}


char saisie_une_lettre ()
{
    char lettre;

    cout << "          Entrez, une lettre  suivie de ENTER   "<<"      "<<endl;
    cin>>lettre;
    return lettre ;
}


void verification(char lettre_tapee_par_deuxieme_joueur,t_chaine40 & phrase_temoin,t_chaine40 &  phrase_reconstituee)
  {
      int i;
      int lg;
      bool trouve_lettre_correcte_ou_pas=0;
      int nbre_lettre_tapee_par_deuxieme_joueur;
      char lettre_deux;
   for(i=0;i<lg;i++)
   {lettre_deux= saisie_une_lettre();
   lettre_tapee_par_deuxieme_joueur=lettre_deux;
      if (lettre_deux== phrase_temoin[i])
           phrase_reconstituee[i]=lettre_deux;
        trouve_lettre_correcte_ou_pas=1;
        nbre_lettre_tapee_par_deuxieme_joueur++;

    }
 }


int main()
{
    int lg=0; // déclaration de la variable ou stoquer la longueur  phrase
    char choix;
    char lettre_saisie;
    int nbre_lettre_trouvee=0;
    bool trouve_lettre_correcte_ou_pas=0;
    t_chaine40 phrase_cachee;
    t_chaine40 alphabet={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','\0'};
    char lettre_tapee_par_deuxieme_joueur;// lettre que le deuxieme joueur a tapé
    t_chaine40  phrase_temoin;
    int nbre_lettre_contenues_dans_phrase_cachee;
    t_chaine40 phrase_reconstituee;
    t_chaine40 cachee={' ','\0'};
     //on vérifie si la lettre tapée est correcte
    int i;
    int score=10;


    do
    {
        cout<<"     "<<endl;
        cout<<"     "<<endl;
        cout<<"     "<<endl;
        cout<<"     "<<endl;
        cout<<"                  BIENVENUE DANS LE JEU DE LA ROUE DE L'INFORTUNE  "<< endl;
        cout<<"                |        choix(1):Jouer                            |"<< endl;
        cout<<"                |        choix(2):Options                          |"<< endl;
        cout<<"                |        choix(3):Quitter                          |"<< endl;
        cout<<"                |                                                  |"<<endl;

        cin>>choix;

        switch   (choix)
        {

            case '1' :
                    cout << "                          jouer     " << endl;
                    saisir_phrase(lg,phrase_cachee);

                    afficher_phrase (lg,phrase_cachee);
                    cout<<endl;
                    system("CLS");
                    afficher_phrase (26,alphabet);
                    cout<<endl;
                    cout<<endl;
                    afficher_phrase_c (lg,cachee);
                    while(nbre_lettre_trouvee < lg)  // verifie si la phrase est terminée
                    {
                        lettre_saisie = saisie_une_lettre ();// retourner une lettre tapée par le deuxième joueur,résultat du sous programme

                       verification(lettre_saisie,phrase_temoin,phrase_reconstituee);
                        afficher_phrase (lg,cachee);
                        cout << endl;


                    if  ( trouve_lettre_correcte_ou_pas == 0); // si lettre  n'appartient pas à la phrase
                         else  trouve_lettre_correcte_ou_pas = 0 ;//ça passe à 1 automatiquement donc on est obligé d'initialiser à 0
                         score++;
                      }

 break;
            case '2' :
                 cout<<endl;
                 cout<<endl;
                 cout << "Options" << endl;
                 cout<<endl;
                 cout<<endl;
                 cout << "Règles" << endl;
                 cout<<endl;
                 cout<<endl;
                 cout << "La roue de l'infortune se présente sous la forme d'une grille"<<endl;
                 cout <<"qui doit etre remplie au fur et a mesur par des"<< endl;
                 cout<< "lettres, ce jeu necessite 2 joueurs. Dans un premier temps"<<endl;
                 cout <<"le premier joueur rentre une phrase ou un mot dans la grille sans "<<endl;
                 cout <<"que le deuxieme joueur voit ce qui est écrit. Ce dernier propose"<<endl;
                 cout <<"des lettres en essayant de deviner la phrase cachee en essayant"<<endl;
                 cout <<"de remplir les cases de la grille avec les lettres trouvees."<<endl;
                 cout <<"Une lettre ne peut etre proposee qu'une seule fois." << endl;


                break;

            case '3' :
                cout << "Au revoir !" << endl;
                break;

            default : cout<<"choix incorrect";
break;
      }
      break;
    }
    while (choix != '3');

 cout<<" "<<endl;
   cout<<"|---------------------------------------------------------|"<<endl;


    return 0;
}


 

Hors ligne

Réponse rapide

Veuillez composer votre message et l'envoyer
Nom (obligatoire)

E-mail (obligatoire)

Message (obligatoire)

Programme anti-spam : Afin de lutter contre le spam, nous vous demandons de bien vouloir répondre à la question suivante. Après inscription sur le site, vous n'aurez plus à répondre à ces questions.

Quel est le résultat de l'opération suivante (donner le résultat en chiffres)?
soixante dix-huit moins dix-huit
Système anti-bot

Faites glisser le curseur de gauche à droite pour activer le bouton de confirmation.

Attention : Vous devez activer Javascript dans votre navigateur pour utiliser le système anti-bot.

Pied de page des forums