Le jeu du pendu debutant
fannypamcof
Messages postés
3
Date d'inscription
Statut
Membre
Dernière intervention
-
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je suis débutante en c et je n'arrive pas à trouver le problème dans mon programme. Pourriez vous jeter un oeil si ça ne vous dérange pas. Le problème est que je n'arrive pas à remplacer dans le mot étoile la lettre choisie par le joueur lorsqu'elle est correcte, le soucis vient du if...
Merci d'avance
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int p;
int i;
char mot1[100]={0};
char mot2[100]={0};
char lettre[26]={0};
int erreur=0;
printf("Le joueur 1 entre le mot :");
scanf("%s",&mot1);
printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
p=strlen(mot1);
for (i=0;i<p;i++) {
mot2[i]=42;
}
printf("Le mot a trouve est de la forme %s",mot2);
while (mot1!=mot2 && erreur<10)
{
printf("\n Entrer une lettre");
scanf("\n %c",&lettre);
if (lettre[i]=mot1[i]){
mot2[i]=lettre[i];
printf("Le mot devient %s",mot2);
}
else{
erreur=erreur+1;
printf("Il vous reste %d coups",(10-erreur));
}
printf("\n le mot est %s",mot2);
}
return 0;
}
Je suis débutante en c et je n'arrive pas à trouver le problème dans mon programme. Pourriez vous jeter un oeil si ça ne vous dérange pas. Le problème est que je n'arrive pas à remplacer dans le mot étoile la lettre choisie par le joueur lorsqu'elle est correcte, le soucis vient du if...
Merci d'avance
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int p;
int i;
char mot1[100]={0};
char mot2[100]={0};
char lettre[26]={0};
int erreur=0;
printf("Le joueur 1 entre le mot :");
scanf("%s",&mot1);
printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
p=strlen(mot1);
for (i=0;i<p;i++) {
mot2[i]=42;
}
printf("Le mot a trouve est de la forme %s",mot2);
while (mot1!=mot2 && erreur<10)
{
printf("\n Entrer une lettre");
scanf("\n %c",&lettre);
if (lettre[i]=mot1[i]){
mot2[i]=lettre[i];
printf("Le mot devient %s",mot2);
}
else{
erreur=erreur+1;
printf("Il vous reste %d coups",(10-erreur));
}
printf("\n le mot est %s",mot2);
}
return 0;
}
A voir également:
- Le jeu du pendu debutant
- Jeu du pendu - Télécharger - Vie quotidienne
- 94 jeu - Télécharger - Puzzle & Réflexion
- 94 degrés jeu - Télécharger - Divers Jeux
- Jeu zuma - Télécharger - Jeux vidéo
- Logiciel de programmation pour débutant - Guide
4 réponses
Bonjour,
Plein de choses à revoir. Je reprends le code :
scanf("%s",&mot1);
Pas de & pour un tableau.
mot2[i]=42;
Mets plutôt '*' que 42, c'est plus lisible...
while(mot1!=mot2 ...)
Ca sera toujours faux. Toi ce que tu veux faire, c'est plutôt :
while(strcmp(mot1, mot2) ...) /*retourne 0 si les deux tableaux sont égaux*/
scanf("\n %c",&lettre);
Mets plutôt : scanf("%c",&lettre) ou simplement : lettre=getchar();
Et remets un getchar(); juste après pour supprimer le \n du buffer clavier.
Ce qui donne :
scanf("%c",&lettre); /*ou lettre=getchar();*/
getchar();
if (lettre[i]=mot1[i]){
Il faut mettre == ici. == c'est pour la comparaison, = pour l'affectation.
De plus, attention lettre est un tableau. Il aurait fallu qu'il soit déclaré : char lettre;
Donc là, à toi de préciser ce que tu veux, car c'est pas clair.
printf("\n le mot est %s",mot2);
N'oublie pas de mettre un \n après le %s avant d'appeler le return 0; final. Ou sinon mets un fflush(stdout);
Corrige tout le code, et reposte-le s'il reste des erreurs. N'oublie pas d'utiliser les balises "code" (à droite du bouton souligné), sinon c'est illisible pour nous...
Plein de choses à revoir. Je reprends le code :
scanf("%s",&mot1);
Pas de & pour un tableau.
mot2[i]=42;
Mets plutôt '*' que 42, c'est plus lisible...
while(mot1!=mot2 ...)
Ca sera toujours faux. Toi ce que tu veux faire, c'est plutôt :
while(strcmp(mot1, mot2) ...) /*retourne 0 si les deux tableaux sont égaux*/
scanf("\n %c",&lettre);
Mets plutôt : scanf("%c",&lettre) ou simplement : lettre=getchar();
Et remets un getchar(); juste après pour supprimer le \n du buffer clavier.
Ce qui donne :
scanf("%c",&lettre); /*ou lettre=getchar();*/
getchar();
if (lettre[i]=mot1[i]){
Il faut mettre == ici. == c'est pour la comparaison, = pour l'affectation.
De plus, attention lettre est un tableau. Il aurait fallu qu'il soit déclaré : char lettre;
Donc là, à toi de préciser ce que tu veux, car c'est pas clair.
printf("\n le mot est %s",mot2);
N'oublie pas de mettre un \n après le %s avant d'appeler le return 0; final. Ou sinon mets un fflush(stdout);
Corrige tout le code, et reposte-le s'il reste des erreurs. N'oublie pas d'utiliser les balises "code" (à droite du bouton souligné), sinon c'est illisible pour nous...
Je fais pas de c mais tu peux essayer de mettre deux = au lieu de un seul dans ton if.
if(lettre[i]==mot1[i])
if(lettre[i]==mot1[i])
Merci pour ta réponse mais quand je met le == ça ne remplace toujours pas par la lettre entrer si elle existe dans mot1 et en plus si elle n'appartient pas au mot 1 il ne rentre pas dans le else, il reste dans le if (il ne met plus qu'il reste x coup a jouer).
Re bonsoir,
il manque juste un arrêt à la fin du programme afin que l'on sache le bon mot si l'on a perdu, par exemple et si l'on a gagne avant que le programme s'arrete. Je ne sais pas du tout comment faire ça mais le programme est bon.
il manque juste un arrêt à la fin du programme afin que l'on sache le bon mot si l'on a perdu, par exemple et si l'on a gagne avant que le programme s'arrete. Je ne sais pas du tout comment faire ça mais le programme est bon.
#include <stdio.h> #include <stdlib.h> #include <string.h> int main() { int p; int i; char mot1[100]={0}; char mot2[100]={0}; char lettre; int erreur=0; printf("Le joueur 1 entre le mot :"); scanf("%s",&mot1); printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"); p=strlen(mot1); for (i=0;i<p;i++) { mot2[i]=42; } printf("Le mot a trouve est de la forme %s",mot2); while ((strcmp(mot1,mot2)!= 0) || (erreur<10)){ printf("\n Entrer une lettre "); scanf("\n %c",&lettre); int cpt = 0; for(i=0;i<p;i++){ if (lettre == mot1[i]){ mot2[i]=lettre; cpt=cpt+1; } } if (cpt == 0){ erreur=erreur+1; printf("\nIl vous reste %d coups",(10-erreur)); } printf("\nle mot devient %s",mot2); } printf("\nle mot est %s",mot2); return 0; }