Vous n êtes pas connecté
Page :
Auteurs | Messages |
---|---|
Anonyme | Posté à 16h59 le 28 Jul 16 |
![]() Membre inscrit le 09/06/2013 Messages : 0 Localisation : | #include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> #include <time.h> #define SOLO 1 #define MULTI 2 typedef enum Bool Bool; enum Bool { TRUE, FALSE }; typedef struct NiveauJeu NiveauJeu; struct NiveauJeu { char nomNiveau[100]; int min; int nombreMot; int coupMax; }; NiveauJeu niveaux[] = { {"Facile", 0, 20, 15}, {"Moyen", 0, 20, 10}, {"Difficile", 0, 20, 7} }; int demanderModeJeu() { int modeJeu; printf(" "); printf("MODE DE JEU "); printf("Bien vouloir choisir un mode de jeu ! "); printf("1. Mode Solo 2. Mode Multi "); do { printf("Votre choix ? "); scanf("%d", &modeJeu); }while(modeJeu < 1 || modeJeu > 2); return modeJeu; } NiveauJeu demanderNiveauJeu() { int choixNiveau; printf(" "); printf("NIVEAU DE JEU "); printf("Bien vouloir choisir un niveau de jeu ! "); printf("1. Facile 2. Moyen 3. Difficile "); do { printf("Votre choix ? "); scanf("%d", &choixNiveau); }while(choixNiveau < 1 || choixNiveau > 3); return niveaux[choixNiveau - 1]; } int demanderNombre(int nbCoupsRestants) { int nombreSaisi; printf(" "); printf("Attention, il vous reste seuleument %d coups ", nbCoupsRestants); printf("Quel est le nombre ? "); scanf("%d",&nombreSaisi); return nombreSaisi; } int demanderMotSecret() { int tailleMot = 0, i = 0; char *motSecret = NULL; printf("Nombre de termes ? "); scanf("%d", &tailleMot); motSecret = malloc(tailleMot * sizeof(char)); if(motSecret == NULL) { exit(0); } printf("mot secret ? "); for(i = 0; i < tailleMot; i++) { scanf("%s", &motSecret[i]); } return *motSecret; } int nombreAleatoire(int nombreMot) { srand(time(NULL)); return (rand() % nombreMot); //le nombre de mot contenu dans le dictionnaire. } void debutPartie() { printf(" "); printf("************************************** "); printf("************LE JEU DU PENDU*********** "); printf("********Code par Jean Dechanel******** "); printf("************************************** "); } void viderBuffer() { int c = 0; while(c != ' ' && c != EOF) { c = getchar(); } } int lire(char* chaine, int longueurChaine) { char* positionEntree = NULL; if(fgets(chaine, longueurChaine, stdin) != NULL) { positionEntree = strchr(chaine, ' '); if(positionEntree != NULL) { *positionEntree = ' '; }return 1; }else { viderBuffer(); return 0; } } long lireLong() { char nombreTexte[100] = {0}; if(lire(nombreTexte, 100)) { return strtol(nombreTexte, NULL, 10); }else { viderBuffer(); return 0; } } int tireMotAleatoire(char motSecret[]) { int caractereLu = 0, nombreMot = 0, numMotSecret = 0; FILE* dico = NULL; int caracterelu = 0; dico = fopen("/home/ubuntu/workspace/dico.txt", "r"); if(dico == NULL) exit(0); else { do { caracterelu = fgetc(dico); if(caracterelu == ' ') nombreMot++; }while(caracterelu != EOF); numMotSecret = nombreAleatoire(nombreMot); rewind(dico); while(numMotSecret > 0) { caractereLu = fgetc(dico); if(caractereLu == ' ') numMotSecret--; } fgets(motSecret, 100, dico); motSecret[strlen(motSecret) - 1] = ' '; fclose(dico); } return EXIT_FAILURE; } int afficherMotMasque(char motSecret[], int lettresTrouvees[], int taille) { int i; for (i = 0 ; i < taille ; i++) { if (lettresTrouvees[i]) printf("%c", motSecret[i]); else printf("*"); } return motSecret[i]; } int compterMot(int nombreMot) { FILE* dico = NULL; int caracterelu = 0; dico = fopen("/home/ubuntu/workspace/dico.txt", "r"); if(dico == NULL) exit(0); else { do { caracterelu = fgetc(dico); if(caracterelu == ' ') nombreMot++; }while(caracterelu != EOF); } return nombreMot; } Bool rejouerPartie(long choice) { printf("Voulez-vous rejouer une autre Partie ? "); printf("1. Oui 2. Non "); do { printf("Votre choix ? "); choice = lireLong(); }while(choice < 1 || choice > 2); return choice == 1; } int gagnerJeu(int lettresTrouvees[], int tailleMot) { int remplir = 1; int i = 0; for(i = 0; i < tailleMot; i++) { if(lettresTrouvees[i] == 0) remplir = 0; } return remplir == 1; } int lireCaractere() { char caractere = 0; caractere = getchar(); caractere = toupper(caractere); while(getchar() != ' '); return caractere; } int rechercherLettre(char lettreSaisie, char motSecret[], int lettresTrouvees[]) { int i = 0; int bonneLettre = 0; for(i = 0; motSecret[i] != ' '; i++) { if(lettreSaisie == motSecret[i]) { bonneLettre = 1; lettresTrouvees[i] = 1; } } return bonneLettre == 1; } void afficherLettre(int lettresTrouvees[], char motSecret[], int tailleMot) { int i = 0; for(i = 0; i < tailleMot; i++) { if(lettresTrouvees[i]) printf("%c", motSecret[i]); else printf("*"); } } int main(int argc, char* argv[]) { char motSecret[100] = ""; int i = 0, choice = 0, caractereLu = 0, numMotSecret = 0, tailleMot = 0, modeJeu = 0; int nbCoupsRestants = 0; char lettreSaisie = 0; int* lettresTrouvees = NULL; printf(" "); debutPartie(); do { modeJeu = demanderModeJeu(); printf("Bienvenu au mode %s ! ", modeJeu == SOLO ? "Solo" : "Multi"); NiveauJeu niveauJeu = demanderNiveauJeu(); printf("Bienvenu au niveau %s ! ", niveauJeu.nomNiveau); nbCoupsRestants = niveauJeu.coupMax; *motSecret = modeJeu == SOLO ? tireMotAleatoire(motSecret) : demanderMotSecret(); if(! tireMotAleatoire(motSecret)) exit(0); tailleMot = strlen(motSecret); lettresTrouvees = malloc(tailleMot * sizeof(int)); if(lettresTrouvees == NULL) { printf("Impossibe d'ouvrir le fichier dico.txt ! "); exit(0); } for(i = 0; i < tailleMot; i++) lettresTrouvees[i] = 0; do { printf(" Il vous reste %d coups a jouer ! ", nbCoupsRestants); printf(" Quel est le mot secret ? "); afficherLettre(lettresTrouvees, motSecret, tailleMot); printf(" Proposez une lettre "); lettreSaisie = lireCaractere(); if(!rechercherLettre(lettreSaisie, motSecret, lettresTrouvees)) { nbCoupsRestants--; printf("Cette lettre ne figure pas dans le mot secret "); } }while(nbCoupsRestants > 0 && !gagnerJeu(lettresTrouvees, tailleMot)); if(gagnerJeu(lettresTrouvees, tailleMot)) { printf(" "); printf("GAGNE, le mot secret etait bien %s !!! ", motSecret); printf("Partie terminee ! "); }else { printf(" "); printf("PERDU, le mot secret etait %s !!! ", motSecret); printf("Partie terminee ! "); } }while(rejouerPartie(choice)); printf(" "); printf("Partie terminee !!! "); return 0; } |
Samomoi |
Page :