Realisation du jeu motus en language C

[Fermé]
Signaler
Messages postés
4
Date d'inscription
samedi 20 octobre 2012
Statut
Membre
Dernière intervention
11 novembre 2012
-
Messages postés
9688
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
2 octobre 2020
-
Bonjour,
veuillez bien m aider a programmer jeu motus.pour vs rapprochez du jeu le travail demandé consiste a lire un mot(suite de lettre) a partir d un fichier et donne au joueur dix essais .
Au départ le programme communique a l'utilisateur la longeur du mot a trouver en suite le joueur saisi un mot .Aprés chaque essau ,le programme affiche les caractères saisis a la bonne places .Si le joueur trouve le mot rechercher avant 10 essais ,le programme affiche un message de félicitation sinon le programme se termine en affichant GAMEOVER

voila ma solution :) " incorrecte " aidez moi svp le plus vite possible et merci d'avance


/* >la partie qui commence du début jusqu'a int main a été proposé par le prof*/


#include<stdio.h>
#include<stdlib.h>
#define ENTREE "MotRechrcher.txt"
#define Max 50
void *LireMot(char*S)
{
FILE*F_IN;
if((F_IN=fopen(ENTREE,"r"))==NULL)
{
printf("Erreur d'ouverture du fichier %s",ENTREE);
return 0;
}
fscanf(F_IN,"%s",S);
fclose(F_IN);

}
int main ()
{
char*r,*t;
int i,n;
LireMot(mot);
printf("la longueur du mot a rechercher est:");
scanf("%d",&n);
for(i=0;i<n;i++)
printf("t[%d]='-'\n",i);
for(j=0;j<10;j++)
{
printf("saisir un mot:\t");
scanf("%s",r);
if(r[j]==s[j])
{
t[i]=r[j];
j++;
}
else
j++;
}

printf("%s\n",*r);
system("pause");
return 0;
}
A voir également:

6 réponses

Messages postés
9688
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
2 octobre 2020
1 314
int main ()
{
char*r,*t;
int i,n;
LireMot(mot);"mot" non déclarer
printf("la longueur du mot a rechercher est:");
scanf("%d",&n); Pourquoi lire n ? n est la longueur du mot n=strlen(mot)
for(i=0;i<n;i++)
printf("t[%d]='-'\n",i);
for(j=0;j<10;j++)
{
printf("saisir un mot:\t");
scanf("%s",r);
if(r[j]==s[j]) j, c'est le nombre d'essai. stupide de l'utiliser dans le mot lu. pas de référence à mot, s non déclaré
{
t[i]=r[j];que vaut i ? il n'a pas de sens ici
j++;
}
else
j++;
} 

quelques commentaires. Il y a tellement d'erreur que je suis à peu près sur d'en avoir sauter plein. Essai déjà de corrige celle que j'ai vu.
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 41713 internautes nous ont dit merci ce mois-ci


Pourquoi ne pas essayer de compiler tout ça et de regarder les erreurs que te donnera le compilo?
Messages postés
4
Date d'inscription
samedi 20 octobre 2012
Statut
Membre
Dernière intervention
11 novembre 2012

j'ai apporté certaines modifications au programme .Mon probléme c'est qu'il n'enregistre pas les lettres saisis à la bonne place, :(

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define ENTREE "MotRechercher.txt"
#define Max 50
void *LireMot(char*S)
{
FILE*F_IN;
if((F_IN=fopen(ENTREE,"r"))==NULL)
{
printf("Erreur d'ouverture du fichier %s",ENTREE);

}
fscanf(F_IN,"%s",S);
fclose(F_IN);

}
int main ()
{
char t[50];
char mot[50];
char r[50];

int i,j,cmp=0,n;
LireMot(mot);
n=strlen(mot);
printf("\nla longeur du mot :%d\n",n);
do
{

do
{
printf("saisir un mot:\t");
scanf("%s",r);
}
while(strlen(r)!=n);

for(i=0;i<n;i++)
{
if(r[i]==mot[i])

printf("\n%c\n",t[i]);

else
printf("-\n");
}
for(j=0;j<n;j++)
t[j]=r[j];

cmp++;
}while(cmp<10);

for(j=0;j<n;j++)
{
if(t[j]==mot[j])
{

printf("félicitation\n");
break;
}
else
{
printf("gameover\n");
break;
}


}

system("pause");
return 0;



}
Messages postés
4
Date d'inscription
samedi 20 octobre 2012
Statut
Membre
Dernière intervention
11 novembre 2012

voila jai suit ton conseil et jai bcq modifier le programme si tu peux jeter un coup d'oil là dessus je te serait reconnaissante " le programme est en bas "
Messages postés
4
Date d'inscription
samedi 20 octobre 2012
Statut
Membre
Dernière intervention
11 novembre 2012

Mon probléme c'est qu'il n'enregistre pas les lettres saisis à la bonne place, :(

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define ENTREE "MotRechercher.txt"
#define Max 50
void *LireMot(char*S)
{
FILE*F_IN;
if((F_IN=fopen(ENTREE,"r"))==NULL)
{
printf("Erreur d'ouverture du fichier %s",ENTREE);

}
fscanf(F_IN,"%s",S);
fclose(F_IN);

}
int main ()
{
char t[50];
char mot[50];
char r[50];

int i,j,cmp=0,n;
LireMot(mot);
n=strlen(mot);
printf("\nla longeur du mot :%d\n",n);
do
{

do
{
printf("saisir un mot:\t");
scanf("%s",r);
}
while(strlen(r)!=n);

for(i=0;i<n;i++)
{
if(r[i]==mot[i])

printf("\n%c\n",t[i]);

else
printf("-\n");
}
for(j=0;j<n;j++)
t[j]=r[j];

cmp++;
}while(cmp<10);

for(j=0;j<n;j++)
{
if(t[j]==mot[j])
{

printf("félicitation\n");
break;
}
else
{
printf("gameover\n");
break;
}


}

system("pause");
return 0;



}
Messages postés
9688
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
2 octobre 2020
1 314
int main ()
{
char t[50];
char mot[50];
char r[50];

int i,j,cmp=0,n;
LireMot(mot);
n=strlen(mot);
printf("\nla longeur du mot :%d\n",n);
do
{

   do
   {
       printf("saisir un mot:\t");
       scanf("%s",r);
   }
   while(strlen(r)!=n);

   for(i=0;i<n;i++)
   {
        if(r[i]==mot[i])

             printf("\n%c\n",t[i]); // 't' n'est pas encore initilisé

        else
             printf("-\n");
   }
   for(j=0;j<n;j++)
       t[j]=r[j];

   cmp++;
}while(cmp<10);

for(j=0;j<n;j++)// cette boucle ne sert à rien, quoi qu'il se passe tu en sortira à la première itération.
{
    if(t[j]==mot[j])
    {

           printf("félicitation\n");
           break;
    }
    else
    {
            printf("gameover\n");
            break;
    }


}

system("pause");
return 0;



}

C'est pas mal, mais je pense que ton algorithme n'est pas au point.
t devrait être une espèce de "masque" qui contient soit les lettres bien placé soit des tirets. Il faut donc l'initialisé avec des tirets pour commencer.
ensuite, il faut gérer la mise à jour de ce t en fonction de "r" et "mot".
Tu n'es pas loin de la solution.