#include <stdio.h>
#include <stdlib.h>
#include <ctype.h> // Biblio pour getchar()
#include <string.h> // Bibliothèque de manipulation des chaines
/* Règles du jeu de pendu:
* Trouver le mot caché en moins de 10 coups */
char lireCaractere();
char rechercheCaractere(char mot_cible[], char lettre_cible[]);
char decouverteMotEtoile(char motSecret[], char motEtoile[], char lettre[]);
int main(int argc, char **argv)
{
// Mot secret fixé avant le dictionnaire
char motSecret[] = "ESTUAIRE";
// Initialisation des différentes variables
char lettre_entree[] = "a";
int compteur = 10;
char motEtoile[] = " ";
int i = 0;
int longueur = 0;
// Génération du mot étoile
longueur = strlen(motSecret);
//for (i = 0 ; i <= longueur; i++)
for (i = 0 ; i < longueur; i++)
{
motEtoile[i] = '*';
}
// Boucle de récupération de la lettre
while (compteur > 0)
{
//printf("Quel est le mot secret ? %s\n Proposez une lettre: ", motSecret);
printf("Quel est le mot secret ? \n Proposez une lettre: ");
*lettre_entree = lireCaractere();
decouverteMotEtoile(motSecret, motEtoile, lettre_entree);
//printf("%s", motEtoile);
if(rechercheCaractere(motSecret, lettre_entree) == 0)
{
compteur--;
}
printf("Il vous reste %d coups !\n\n", compteur);
}
return 0;
}
// Acquisition de caractère
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
}
// Fonction de recherche du caractère dans le mot secret
char rechercheCaractere(char mot[], char lettre[])
{
//~ char mot[] = "MARRON";
//~ char lettre[] = "R";
char *temp = NULL;
int compteur_lettredumot = 0;
temp = strpbrk (mot, lettre);
if (temp != NULL)
{
while (temp != NULL)
{
temp = strpbrk (temp+1, lettre);
compteur_lettredumot++;
}
printf("Effectivement, il y avait %d %s ! \n", compteur_lettredumot, lettre);
}
if (compteur_lettredumot == 0)
{
printf("Non, il n'y avait pas de %s ! \n", lettre);
return 0;
}
return 1;
}
// Fonction de découverte du mot secret (transformation des étoiles par les lettres trouvées)
char decouverteMotEtoile(char motSecret[], char motEtoile[], char lettre[])
{
int i = 0;
//for (i = 0 ; i <= strlen(motSecret) ; i++)
for (i = 0 ; i < strlen(motSecret) ; i++)
{
if ( *lettre == motSecret[i] )
{
motEtoile[i] = motSecret[i];
}
}
printf("%s", motEtoile);
return 1;
}