Le jeu du pendu debutant

Fermé
fannypamcof Messages postés 3 Date d'inscription dimanche 16 décembre 2012 Statut Membre Dernière intervention 16 décembre 2012 - 16 déc. 2012 à 19:39
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 16 déc. 2012 à 21:16
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;
}
A voir également:
  • Le jeu du pendu debutant
  • Jeu du pendu - Télécharger - Vie quotidienne
  • 94 jeu - Télécharger - Puzzle & Réflexion
  • Jeu zuma - Télécharger - Jeux vidéo
  • Jeu 94 degrés - Télécharger - Divers Jeux
  • Logo jeu - Télécharger - Jeux vidéo

4 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 843
16 déc. 2012 à 20:51
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...
1
ken dumoulin Messages postés 54 Date d'inscription dimanche 16 décembre 2012 Statut Membre Dernière intervention 20 janvier 2013 4
16 déc. 2012 à 19:44
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])
0
fannypamcof Messages postés 3 Date d'inscription dimanche 16 décembre 2012 Statut Membre Dernière intervention 16 décembre 2012
16 déc. 2012 à 19:48
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).
0
fannypamcof Messages postés 3 Date d'inscription dimanche 16 décembre 2012 Statut Membre Dernière intervention 16 décembre 2012
16 déc. 2012 à 21:13
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.

#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;
}
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 843
16 déc. 2012 à 21:16
Il y a encore des problèmes dont j'ai signalés plsu haut.
Sache, que ce n'est pas parce qu'un programme fonctionne qu'il est correct. Surtout en C.
0