g fé ce ke tu m´a di:
using std::cin;
using std::cout;
using std::endl;
int main()
{
srand(time(NULL));
char*
listemots[5]={"salut","bonjour","hola","youpi","ya
hoo"};
int n;
n = rand()%5;
int d;
cout < <"Entrez une lettre ! "<<endl;
cin > > d;
cout < < listemots[n][2]<<endl;
int a=0;
while(listemots[n][a]!=d && listemot [n][a]!=´/0´)a++
if(listemots[n][a]==´/0´){
cout < <"Votre lettre n´existe pas dans ce mot"<<endl;
else cout < <"Lettre situe a la position " <<a<<endl;
cout < <"Avez vous trouve le mot ? ";
char c[100];
cin c;
}
if(strcmp(c,listemots[n])==0){
cout < <"Bravo vous avez touve le mot ! "<<endl;
else cout < <"Ce n´est pas le bon mot ! "<<endl;
}
}
g d erreurs de partout:
-16 `cout´ undeclared ( first use this function)
-16 `endl´ undeclared ( first use this function)
-17 `cin´ undeclared ( first use this function)
-20 `listemot´ undeclared ( first use this function)
-20 [Warning] multi-character character constant
-21 parse error before `if´
-21 [Warning] multi-character character constant
-26 parse error before `;´
-27 confused by earlier errors, bailing out
cout, endl et cin font parti de iostream.h que tu n´as pas inclut.
merci maintenant ca va pour endl cin et cout. mais pour le reste?
Ensuite ton compilateur croit que listemot est uune fonction probablement car tu l´as mal déclarer.Sinon le else n´est pas à mettre dans les crochets du if. Bon je continue à regarder...
-20 `listemot´ undeclared ( first use this function)
> T´as oublié le " s" : )
Et ligne 28, t´as oublié les > >
Nop : listemots est bien déclaré
mais regarde un coup tu mets un " s" et un autre non
listemots
listemot
tiens toi bien a ça
pour cout, on est ok faut mettre
tes accolades ne sont pas du tout en place et tu as oublié le while qui englobe le tout:
de + toi tu mets `/0` alors que c´est
´\0´ --> une backslash et et les ´ de la touche 4.
voila, regarde ceci : normalement ça marche
int main()
{
srand(time(NULL));
char*
listemots[5]={"salut","bonjour","hola","youpi","ya
hoo"};
int gagne=0;
int n;
n = rand()%5;
char d;
while(gagne==0)
{
cout < <"Entrez une lettre ! " <<endl;
cin > > d;
int a=0;
while(listemots[n][a]!=d && listemots[n][a]!=´\0´) a++;
if(listemots[n][a]==´\0´)
cout < <"Votre lettre n?existe pas dans ce mot"<<endl;
else cout < <"Lettre situe a la position " < <a<<endl;
cout < <"Avez vous trouve le mot ( 1 pour oui, 0 pour non)? " ;
int t;
cin > > t;
if ( t==1)
{
cout < < " proposez votre mot" < < endl;
char c[100];
cin > > c;
if(strcmp(c,listemots[n])==0)
gagne = 1;
else cout < <"Ce n?est pas le bon mot ! " <<endl;
} // fin du if t==1
} // fin du while gagne, passe que si gagne =
cout < < " gagne´ ! !" < < endl;
cin > > n; // juste pour qu´il ne sorte pas
return 0;
}
g fé ton truc mé g d blems:
-21 parse error before character 0264
-21 stray ´\´ in program
-22 parse error before character 0264
-22 stray ´\´ in program
-41 confused by earlier errors, bailing out
vla le prog:
int main()
{
srand(time(NULL));
char*
listemots[5]={"salut","bonjour","hola","youpi","ya
hoo"};
int gagne=0;
int n;
n = rand()%5;
char d;
while(gagne==0)
{
cout < <"Entrez une lettre ! " < <endl;
cin > > d;
int a=0;
while(listemots[n][a]!=d && listemots[n][a]!=´\0´) a++;
if(listemots[n][a]==´\0´)
cout < <"Votre lettre n?existe pas dans ce mot"<<endl;
else cout < <"Lettre situe a la position " < <a<<endl;
cout < <"Avez vous trouve le mot ( 1 pour oui, 0 pour non)? " ;
int t;
cin > > t;
if ( t==1)
{
cout < < " proposez votre mot" < < endl;
char c[100];
cin > > c;
if(strcmp(c,listemots[n])==0)
gagne = 1;
else cout < <"Ce n?est pas le bon mot ! " < <endl;
} // fin du if t==1
} // fin du while gagne, passe que si gagne =
cout < < " gagne´ ! ! " < < endl;
cin > > n; // juste pour qu´il ne sorte pas
return 0;
}
faut bien mettre ton ´\0´ correctement
´ \ 0 ´ ça vient de la
merci beaucoup
ça marche alors ?
tu vois que C bien pratique ce while, c´est un des trucs vraiment sympa a savoir
)
essaie de rajouter des mots dans ta liste !
( et change le rand()%5 en rand()%..)
--> tu mets le chiffre correspondant ![]()
voila maintenant le jeu marche, seulement il reste quelques blem:
- je voudrais que le pc montre les lettres:
cherchez un mot de six lettres
******
entrez 1 lettre
a
lettre en position 2
**a***
et ainsi de suite
- de + j´aimerais que la situation soit plus compréhensible:
ex: ds " salut", le " l" est en troisième position, seulement l´ordi dit en position 2, je voudrais qu´il dise enposition 3.
- si par ex un mot a plusieur même lettres ( par ex tagada), si le joueur entre a le pc indique seulement la position du premier a, pas les autres.
PS: je suis déjà à 52 mots de 6 lettres.
Voila, essaie cela
j´ai ajouté des trucs et enlevé d´autres : la grande nouveauté : un tableau trouve qui peut contenir 20 cases ( que tu pourras modifier)
qui dit que 0 = lettre pas encore trouvée ( donc ce sera une " *" a l´affichage
1 = lettre trouvée : donc lettre affichée
autre nouveauté : le for
si tu as
for(a=0;a<N;a++)
{
// truc
}
ça veut dire qu´il va faire truc pour a=0, puis a=1, puis a=2, etc, jusqu´a a = N-1 ( car a<N)
donc
for(a=0;a<20;a++) trouve[a]=0;
fait simplement cela :
il remet toutes les valeurs de trouve à 0.
strlen(X) retourne la longueur de la chaine ( du mot si tu preferes) X, tu verras que je l´utilise.
avant, j´utilisais while pour lui dire de s´arreter quand il trouvait la lettre d.
maintenant, avec un for, je lui dit : POUR TOUS les caracteres entre 0 et la fin de la chaine, si jamais il trouve d, alors il active le trouve en conséquence, puis il marque a l´écran ( trouvé lettre a +1 )
--> le +1 répond a ta gene : le C++ numérote un mot de 0 à n-1, alors que nous, de 1 a n. Si tu fais +1, tu verras que c´est bon.
Une derniere chose :
il affiches les caracteres 1 par 1 dans le dernier for : donc dans ce cout la, je ne mets pas de endl : il ne revient pas a la ligne !
par contre, a la sortie du for, j´en met 1 pour qu´il y revienne : histoire de présentation.
le for, comme le while est un truc super important et qui sert tout le temps ! !
Voila le code :
int main()
{
srand(time(NULL));
char*
listemots[5]={"salut","bonjour","hola","youpi","ya
hoo"};
char trouve[20];
int a;
for(a=0;a<20;a++) trouve[a]=0;
int gagne=0;
int n;
n = rand()%5;
char d;
while(gagne==0)
{
cout < <"Entrez une lettre ! " <<endl;
cin > > d;
int nb=0;
for(a=0;a<strlen(listemots[n]);a++)
{
if ( listemots[n][a]==d)
{
cout < < " lettre trouvee a la position " < < a +1 < < endl;
trouve[a]=1;
nb++;
} // fin du if
} // fin du for
if(nb==0)
cout < <"Votre lettre n existe pas dans ce mot"<<endl;
// Affiche le mot avec des *
for(a=0;a<strlen(listemots[n]);a++)
{
if ( trouve[a]==1) cout < < listemots[n][a];
else
cout < < " *";
} // fin du for
cout < < endl;
cout < <"Avez vous trouve le mot ( 1 pour oui, 0 pour non)? " ;
int t;
cin > > t;
if ( t==1)
{
cout < < " proposez votre mot" < < endl;
char c[100];
cin > > c;
if(strcmp(c,listemots[n])==0)
gagne = 1;
else cout < <"Ce n est pas le bon mot ! " <<endl;
} // fin du if t==1
} // fin du while gagne, passe que si gagne =
cout < < " gagne ! !" < < endl;
cin > > n; // juste pour qu´il ne sorte pas
return 0;
}
PS : tu devras inclure :
sinon, il risque de ne pas connaitre strlen et strcmp
JYY j´allais le dire on t´as jamais appris à pas couper la parole ![]()
merci ta source est parfaite.
je l´ai un peu modifiée, seulement maintenant j´aimerais que le joueur n´ai droit qu´à dix coups.
et bien tu crée un
int nbcoups=10; // nb coups restants
et tu rajoutes dans ton while :
while(gagne==0 && nbcoups>0)
dans le corps du while tu fais un :
nbcoups--; // < => enleve 1 a nbcoups
et a la fin, hors du while tu fais un test :
if ( gagne==0) cout < < " game over" < < endl;
--> ce sera le cas ou il sera sorti non pas parce que gagne!=0 mais parce que y´a plus de coups...
Maintenant, si tu comprends bien la logique, tu dois pouvoir réussir a trouver par toi meme comment tout faire ![]()
voici mon code:
int main()
{
srand(time(NULL));
char*
listemots[52]={"agonie","amical","baiser","borgne"
,"chenil","couche","danger","donjon","effort","emb
out","facile","festin","gloire","gospel","humain",
"hippie","ignare","injure","jockey","jargon","kimo
no","klaxon","lettre","loquet","manger","miroir","
nation","novice","odorat","orange","palais","poiso
n","quartz","quinze","raison","rosier","salami","s
olide","teigne","tortue","ultime","utopie","valeur
","vessie","wapiti","whisky","xoanon","xylose","ya
kusa","youyou","zigzag","zombie"};
char trouve[20];
int a;
for(a=0;a<20;a++) trouve[a]=0;
int gagne=0;
int n;
n = rand()%52;
char d;
int nbcoups = 10;
while(gagne==0 && nbcoups>0)
{
cout < <"24/10/2003\n\nVoici un jeu semblable au pendu.\n\nVous devez trouver un mot en proposant des lettres."<<endl;
cout < <"\nEntrez une lettre ! \n" < <endl;
cin > > d;
int o;
o = nbcoups--;
int nb=0;
for(a=0;a<strlen(listemots[n]);a++)
{
if ( listemots[n][a]==d)
{
cout < <"\nIl vous reste " <<o<<" coups"<<endl;
cout < < " \nLettre trouvee a la position " < < a +1 < <".\n"<< endl;
trouve[a]=1;
nb++;
} // fin du if
} // fin du for
if(nb==0)
cout < <"\nIl vous reste " <<o<<" coups"<<endl;
cout < <"\nVotre lettre n´existe pas dans ce mot."<<"\n"<<endl;
// Affiche le mot avec des *
for(a=0;a<strlen(listemots[n]);a++)
{
if ( trouve[a]==1) cout < < listemots[n][a];
else
cout < < " *";
} // fin du for
cout < < endl;
cout < <"\nAvez vous trouve le mot ( 1 pour oui, 0 pour non)?" ;
int t;
cin > > t;
cout < <"\n";
if ( t==1)
{
cout < < " Proposez votre mot ! \n" < < endl;
char c[100];
cin > > c;
if(strcmp(c,listemots[n])==0)
gagne = 1;
else cout < <"\nCe n´est pas le bon mot ! " < <endl;
} // fin du if t==1
} // fin du while gagne, passe que si gagne =
if ( gagne==0){
cout < < " \n!!!!!!!!!!VICTOIRE!!!!!!!!!!\n\n!!!!!!!!!!VOUS AVEZ TROUVE LE BON MOT!!!!!!!!!!" < < endl;
}
if ( nbcoups<0){
cout < <"\n!!!!!!!!!!NOMBRE DE COUPS
ECOULE!!!!!!!!!!\n\n!!!!!!!!!!PERDU!!!!!!!!!!"<<en
dl;
}
cin > > n; // juste pour qu´il ne sorte pas
return 0;
}
g 3 blems:
-qd le nb de coups est écoulé le tx affiché est victoire au lieu de perdu
-qd la lettre proposée existe, l´ordi affiche " lettre située à la position 2" " la lettre n´existe pas"
-qd il demande si on propose mot ou pas, ensuite il affiche tout le début ( 24/10/2003\n\nVoici un jeu semblable au pendu.\n\nVous devez trouver un mot en proposant ) j´aimerais que ce message ne s´affiche qu´au lancement.
1)
tu testes
if ( gagne==0)
--> il me semble que cela veut dire " si le joueur n´a pas gagné" non ?
teste plutot :
if ( gagne==1)
Il n´affiche jamais le " perdu" car tu regardes si nbcoups<0. Quand tu sors, nbcoups=0 que je sache
donc il n´est pas < 0
met un < =0 ( plus petit ou égal)
--> if ( nbcoups<0) {
2)
if(nb==0)
cout < < "\nIl vous reste " < <o<<" coups"<<endl;
cout < < "\nVotre lettre n´existe pas dans ce mot."<<"\n"<<endl;
que se passe t il ici ?
si nb=0 alors il fait le 1er cout, il ne le fait pas dans le cas contraire... Puis il continue : quoiqu´il arrive, il fera le cout suivant, car il n´est plus dans le if.
met donc un else :
et si tu veux de la clarté, tu peux aussi mettre des {} : tu verras mieux ce qui est dans le if ou non : comme cela
if(nb==0)
{
cout < < "\nIl vous reste " < <o<<" coups"<<endl;
}
else
{
cout < < "\nVotre lettre n´existe pas dans ce mot."<<"\n"<<endl;
}
3)
si ton message " voici un prog" est DANS le while, comme tu peux le voir, alors il est dans la boucle ! ! il est répété a chaque fois ![]()
met la AVANT le while ![]()
cimer