Forum de mathématiques - Bibm@th.net
Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
#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
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
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
#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++
Merci d'avance de vouloir m'aider.
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
#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
#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
Pages : 1