[C] Un petit jeu du pendu

Résolu
jerryp Messages postés 143 Statut Membre -  
fiddy Messages postés 11653 Statut Contributeur -
Bonjour,

J'ai commncé l'apprentissage du langage C,

et j'aimerais programmer un petit jeu du pendu...

Seulement j'ai un petit problème (non, c'est vrai ?!?)...

Le mot que le joueur recherche est caché par des étoiles *...

Et lorsque le joueur entre une lettre au moyen d'une fonction "maison", je ne sais pas comment faire pour remplacer l'étoile correspondant à la lettre, si toutefois celle-ci se trouve bien dans le mot...

Voici mon code :

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>

char lireCaractere();

int main(int argc, char *argv[])
{
long nombreCoups = 10;
char motMystere[] = "ROUGE";
long nombreCaracteres = 0;
long i = 0;
char caractereEntre = "";

printf("Bienvenue dans le pendu\n\n");
do
{
i = 0;
printf("Il vous reste %ld coups a jouer\n", nombreCoups);
nombreCaracteres = strlen(motMystere);
printf("Quel est le mot cache : ");
do
{
printf("*");
i++;
} while(i != nombreCaracteres);
printf("\n");
printf("Proposez une lettre : ");
caractereEntre = lireCaractere();

if(strchr(motMystere, caractereEntre) == 0)
{

nombreCoups--;
}

} while(nombreCoups != 0);

system("PAUSE");
return 0;
}

char lireCaractere()
{
char caractere = 0;

caractere = getchar();
caractere = toupper(caractere);


while (getchar() != '\n') ;

return caractere;

}

Je vous remercie d'avance,

cordialement,
jerrypeeren

EDIT : je sais que le code n'est pas encore complet et qu'il peut encore être optimisé (par exemple lors de la déclaration des variables), mais je changerai tout ça quand le jeu fonctionnera complètement... L'optimisation, c'est pour après !
A voir également:

8 réponses

mype Messages postés 2449 Statut Membre 437
 
c'est pas trop dure les malloc suffit de trouver la taille du mot avec un strlen pour savoir la taille a donné au mot avec un malloc ensuite tu rempli avec des '*'
ça donne ça

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>

char lireCaractere();
void trouverEtRemplacer(char motSecret[], char motTrouver[], char lettre, long nombreCaracteres);

int main(int argc, char *argv[])
{
	long nombreCoups = 10;
	char motMystere[] = "ROUGE";
	long nombreCaracteres = 0;
	long i = 0;
	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);

	system("PAUSE");
	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, long nombreCaracteres)
{
    char caractereActuel;
    long i = 0;

    do
    {
        caractereActuel = motSecret[i];

        if(caractereActuel == lettre)
        {
            motTrouver[i] = motSecret[i];
        }
        i++;
    }while(i!= nombreCaracteres);
}
il te reste plus qu'a l'optimiser...
3