All pastes #481490 Raw Edit

Manwe

public c v1 · immutable
·published 2007-05-10 21:09 UTC
rendered paste body
############# MAIN.C ##############include <stdio.h>#include <stdlib.h>#include <ctype.h>#include <string.h>#include "fonctions.h"#include "dico.h"int main(void){	long i = 0, nombreEssais = 10, longueur = 0;	int modeJeu = 0, continuerPartie = 1;	char motMystere[100] = {0}, lettreEntree = 0;	char* motActuel = NULL;	while (continuerPartie == 1) // Tant que l'utilisateur désire jouer	{		nombreEssais = 10;		printf("\n=== Le jeu du pendu ===\n\nModes de jeu\n1. Un joueur\n2. Deux joueurs\n");		do		{			printf("Choisissez le mode de jeu : ");			scanf("%d%*[^\n]", &modeJeu);			getchar();		} while (modeJeu != 1 && modeJeu != 2);		if (modeJeu == 1)		{			genererMotMystere(motMystere);			motActuel = genererMotActuel(motMystere, strlen(motMystere));			while (nombreEssais != 0 && nombreEssais != 20)			{				while (compareChaine(motMystere, motActuel) != 0 && nombreEssais != 0)				{					printf("\nMot mystere : %s\nProposez une lettre : ", motActuel);					lettreEntree = lireCaractere();					if (rechercheCaractere(motMystere, lettreEntree) != NULL)					{						printf("\nLa lettre %c est comprise dans le mot mystere, bien joue.\n", lettreEntree);						afficherMotActuel(motMystere, motActuel, lettreEntree);					}					else if (rechercheCaractere(motMystere, lettreEntree) == NULL)					{						nombreEssais--;						afficherBonhomme(nombreEssais);						printf("\nLa lettre %c n'est pas dans le mot mystere, dommage. /!\\\n", lettreEntree);						printf("Il vous reste %ld essais avant une mort certaine.\n", nombreEssais);					}				}				if (compareChaine(motMystere, motActuel) == 0)				{					nombreEssais = 20;					printf("\n%s\nBravo vous avez trouve le mot mystere !\n", motActuel);					do					{						printf("\nVoulez vous rejouer une partie ?\n0 pour quitter et 1 pour rejouer : ");						scanf("%d%*[^\n]", &continuerPartie);						getchar();					} while (continuerPartie != 0 && continuerPartie != 1);				}			}			if (nombreEssais == 0)			{				afficherBonhomme(nombreEssais);				printf("\nVous etes mort !\nLe mot mystere etait : %s\n", motMystere);				do				{					printf("\nVoulez vous rejouer une partie ?\n0 pour quitter et 1 pour rejouer : ");					scanf("%d%*[^\n]", &continuerPartie);					getchar();				} while (continuerPartie != 0 && continuerPartie != 1);			}		}		else if (modeJeu == 2)		{			printf("\nVeuillez entrer un mot que votre adversaire devra deviner.\n");			fgets(motMystere, 100, stdin);			longueur = strlen(motMystere);			for(i = 0; i < longueur; i++)				motMystere[i] = toupper(motMystere[i]);			motMystere[strlen(motMystere)-1] = '\0';			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\n\n\n\n\n\n\n\n\n\n\n\n");			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\n\n\n\n\n\n\n\n\n\n\n\n");			motActuel = genererMotActuel(motMystere, strlen(motMystere));			while (nombreEssais != 0 && nombreEssais != 20)			{				while (compareChaine(motMystere, motActuel) != 0 && nombreEssais != 0)				{					printf("\nMot mystere : %s\nProposez une lettre : ", motActuel);					lettreEntree = lireCaractere();					if (rechercheCaractere(motMystere, lettreEntree) != NULL)					{						printf("\nLa lettre %c est comprise dans le mot mystere, bien joue.\n", lettreEntree);						afficherMotActuel(motMystere, motActuel, lettreEntree);					}					else if (rechercheCaractere(motMystere, lettreEntree) == NULL)					{						nombreEssais--;						afficherBonhomme(nombreEssais);						printf("\nLa lettre %c n'est pas dans le mot mystere, dommage. /!\\\n", lettreEntree);						printf("Il vous reste %ld essais avant une mort certaine.\n", nombreEssais);					}				}				if (compareChaine(motMystere, motActuel) == 0)				{					nombreEssais = 20;					printf("\n%s\nBravo vous avez trouve le mot mystere !\n", motActuel);					do					{						printf("\nVoulez vous rejouer une partie ?\n0 pour quitter et 1 pour rejouer : ");						scanf("%d%*[^\n]", &continuerPartie);						getchar();					} while (continuerPartie != 0 && continuerPartie != 1);				}			}			if (nombreEssais == 0)			{				afficherBonhomme(nombreEssais);				printf("\nVous etes mort !nLe mot mystere etait : %s\n", motMystere);				do				{					printf("\nVoulez vous rejouer une partie ?\n0 pour quitter et 1 pour rejouer : ");					scanf("%d%*[^\n]", &continuerPartie);					getchar();				} while (continuerPartie != 0 && continuerPartie != 1);			}		}		free(motActuel);	}	return 0;}############# FONCTIONS.C ##############include <stdio.h>#include <stdlib.h>#include <ctype.h>#include "fonctions.h"char* genererMotActuel(char* motMystere, long longueur){    char* motActuel = NULL;    long i = 0;    motActuel = malloc(sizeof(motMystere)); // motActuel doit avoir la meme longueur que motMystere    if (motActuel == NULL) // On vérifie si l'allocation a marché ou pas    {        exit(0); // On arrête tout    }    while (i != longueur)    {        motActuel[i] = '*';        i++;    }    return motActuel;}int compareChaine(char *chaine1, char *chaine2){    long i = 0;    for (i = 0; chaine1[i] == chaine2[i]; i++)    {        if (chaine1[i] == 0)        {            return 0;        }    }    return chaine1[i] - chaine2[i];}char lireCaractere(void){    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}char* rechercheCaractere(char* chaine, long caractereVoulu){    long i = 0;    for (i = 0; chaine[i] != caractereVoulu; i++)    {        if (chaine[i] == 0)        {            return NULL;        }    }    return &chaine[i];}void afficherMotActuel(char* motMystere, char* motActuel, char lettreEntree){    char caractereActuel = 1;    long i = 0;    for (i = 0; caractereActuel != 0; i++)    {        caractereActuel = motMystere[i];        if (caractereActuel == lettreEntree)        {            motActuel[i] = motMystere[i];            caractereActuel = motMystere[i];        }    }    return;}void afficherBonhomme(long nombreEssais){    switch (nombreEssais)    {        case 9:        printf("\n\n__________\n\n");        break;        case 8:        printf("\n\n     |\n     |\n     |\n     |\n     |\n     |\n__________\n\n");        break;        case 7:        printf("\n\n     |/\n     |\n     |\n     |\n     |\n     |\n__________\n\n");        break;        case 6:        printf("\n\n    _________\n     |/\n     |\n     |\n     |\n     |\n     |\n__________\n\n");        break;        case 5:        printf("\n\n    _________\n     |/     |\n     |\n     |\n     |\n     |\n     |\n__________\n\n");        break;        case 4:        printf("\n\n    _________\n     |/     |\n     |      0\n     |\n     |\n     |\n     |\n__________\n\n");        break;        case 3:        printf("\n\n    _________\n     |/     |\n     |      0\n     |     \\|/\n     |\n     |\n     |\n__________\n\n");        break;        case 2:        printf("\n\n    _________\n     |/     |\n     |      0\n     |     \\|/\n     |      |\n     |\n     |\n__________\n\n");        break;        case 1:        printf("\n\n    _________\n     |/     |\n     |      0\n     |     \\|/\n     |      |\n     |     / \n     |\n__________\n\n");        break;        case 0:        printf("\n\n    _________\n     |/     |\n     |      0\n     |     \\|/\n     |      |\n     |     / \\ \n     |\n__________\n\n");        break;    }    return;}