Bonjour,
Je suis étudiante et j'ai le jeu du pendu avec dictionnaire de 10 mots à rendre et je suis bloqué dessus enfait j'arrive pas à faire le lien entre le pendu et le dico, j'ai fait quelque chose mais je n'en suis pas du tout sûre vu que je débute dans ce domaine.
Merci à vous car vraiment je galère.
Voici mon programme :
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
char lireCaractere
();
char *strdup
(const char *s
) {
char *d
;
d
= malloc((strlen(s
)+1) * sizeof(char));
strcpy(d
, s
);
return d
;
}
int main
(int argc
, char *argv
[])
{
FILE
*f
; //lepointeur
char **dictionnaire
;
char mot
[81];
size_t nmots
;
/* Lecture du dictiopnnaire */
f
= fopen("dico.txt", "r"); // on ouvre le dictionnaire en lecture seule
fscanf(f
, "%d", &nmots
);
dictionnaire
= malloc(nmots
* sizeof(char *));
for (size_t i
= 0; i
< nmots
; ++i
) {
fscanf(f
, "%80s", mot
);
dictionnaire
[i
] = strdup
(mot
);
}
/* Test: affichage */
for (size_t i
= 0; i
< nmots
; ++i
)
printf("Mot no %d: '%s'\n", i
, dictionnaire
[i
]);
long nombrecoups
= 10 //nombres de coups maximums est de 10
char motsecret
; //le mot secret à découvrir
long nombrecaracteres
= 0; // initialisation du nombre de caractère à 0
long i
= 0; // variable i
char caractereentre
;
char *motdecouvert
;
printf("Bienvenue dans le pendu\n\n");
nombreCaracteres
= strlen(motMystere
);
motDecouvert
= (char *) malloc(nombreCaracteres
* sizeof(char));
for(i
=0;i
<nombreCaracteres
;i
++) motDecouvert
[i
]='*';
do
{
i
= 0;
printf("Il vous reste %ld coups a jouer\n", nombreCoups
);
printf("Quel est le mot cache : ");
do
{
printf("%c", motDecouvert
[i
]);
i
++;
} while(i
!= nombreCaracteres
);
printf("\n");
printf("Proposez une lettre : ");
caractereEntre
= lireCaractere
();
trouverEtRemplacer
(motMystere
, motDecouvert
, caractereEntre
, nombreCaracteres
);
if(strchr(motMystere
, caractereEntre
) == 0)
{
nombreCoups
--;
}
} while(nombreCoups
!= 0);
*/
return 0;
}
char lireCaractere
()
{
char caractere
= 0;
caractere
= getchar(); // On lit le premier caractère
caractere
= toupper(caractere
); // On met la lettre en majuscule si elle ne l'est pas déjà
// On lit les autres caractères mémorisés un à un jusqu'à l'\n (pour les effacer)
while (getchar() != '\n') ;
return caractere
; // On retourne le premier caractère qu'on a lu
}
void trouverEtRemplacer
(char motSecret
[], char motTrouver
[], char lettre
)
{
char caractereActuel
= 0;
long i
= 0;
do
{
caractereActuel
= motSecret
[i
];
if(caractereActuel
== lettre
)
{
motTrouver
[i
] = motSecret
[i
];
}
i
++;
}while(motSecret
[i
] != '\0');
}