shareaza15
Messages postés666Date d'inscriptionsamedi 16 mai 2009StatutMembreDernière intervention11 mai 2010
-
28 août 2009 à 23:45
Bonjour, tous le monde
voila je suis un tuto sur le C et pour tester mes infos on me donne un exercice qui consiste a creer un jeu de pendu alors j'ai reussi a le creer avec un seul mot secret mais une fois que j'ai essayer de lui mettre un systeme pour ca le programme s'arrete une fois une lettre proposée.
alors je vous fais confiance voila mon code :
voila pour le main :
//1. Les Inclusions
#include <stdio.h>
#include <stdlib.h>//Les deux bibliotheques classiques
#include <time.h>//Inclusion de la bibliotheque time pour tirer un nombre au sort
#include <ctype.h>//Inclusion de la bibliotheque ctype pour utiliser getchar et toupper
#include <string.h>//Inclusion de la bibliotheque string pour utiliser strlen strcmp strcpy et strchr
int nombre = 0, lMotSecret = 0;
const int MAX = 4, MIN = 1;
char mot1[] = "MARRON", mot2[] = "SECRET";
char mot3[] = "LESECRET", mot4[] = "LESSECRETS", motSecret[30];
int essais = 10, finDuWhile = 0;//Les declarations sont faites tout au debut pour y avoir acces
char caractere, motTape[30];//La declaration du caractere tapé, du mot tapé et du mot secret
void tirerMot();
void fin();
char lireCaractere();//La fonction lireCaractere qui va jouer le role de la scanf
char analyser(char caractere);//La fonction analyser qui va verifier la presence de la lettre dans le mot secret
int main(int argc, char *argv[])
{
system("TITLE Le Pendu");
tirerMot();//2. On tire un mot au hasard
lMotSecret = strlen(motSecret);//3. Pour un bon fonctionnement on aplique la longueur du mot sur tout le programme
int i;
for (i = 0; i < lMotSecret; i++)//4. On initialise le mot tapé en etoiles
{
motTape[i] = '*';
}
printf("%s", motTape);
printf("BIENVENUS DANS LE PENDU\n\n");
printf("Le jeu consiste a trouver le mot secret en proposant une lettre a chaque fois\nsans perdre tous les essais en proposant de fausses lettres\nBon Jeu");
while (essais > 0 && !finDuWhile)//La boucle ne s'arretera que lorsqu'on pert ou on gagne
{
printf("\n\nIl vous reste %d coups a jouer", essais);
printf("\nQuel est le mot secret ? : %s", motTape);
printf("\nProposez une lettre : ");
caractere = lireCaractere();//5. on lit le caractere tapé
analyser(caractere);//6. on l'analyse
fin(essais, motTape, motSecret);//7. et on applique les consequences
}
if (essais == 0)
{
printf("\nPerdu ! Le mot secret etait %s\n\n", motSecret);
}
else if (strcmp(motTape, motSecret) == 0)
{
printf("\nBien joue ! le mot secret etait bien %s\n\n", motTape);
}
system("PAUSE");
return 0;
}
void tirerMot()
{
srand(time(NULL));
nombre = (rand() % (MAX - MIN + 1)) + MIN;
if (nombre == 1)
{
strcpy(mot1, motSecret);
}
else if (nombre == 2)
{
strcpy(mot2, motSecret);
}
else if (nombre == 3)
{
strcpy(mot3, motSecret);
}
else if (nombre == 4)
{
strcpy(mot4, motSecret);
}
}
char lireCaractere()
{
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 analyser(char caractere)
{
int i;
for (i = 0; i < lMotSecret; i++)//on verifie chaque lettre du mot secret
{
if (caractere == motSecret[i])
{
motTape[i] = motSecret[i];
}
}
strchr(motSecret, caractere);//on cherche le caractere dans le mot secret
if (strchr(motSecret, caractere) == NULL)
{
essais --;
}
//les consequences sont appliquées
return 0;
}
void fin()
{
strcmp(motTape, motSecret);//On compare les deux mots
if (strcmp(motTape, motSecret) == 0 || essais == 0 && strcmp(motTape, motSecret) == 0)
{
finDuWhile = 1;//Si on pert ou on gagne la boucle s'arrete
}
}
et voila pour le Declarations (header) :
int nombre = 0, lMotSecret = 0;
const int MAX = 4, MIN = 1;
char mot1[] = "MARRON", mot2[] = "SECRET";
char mot3[] = "LESECRET", mot4[] = "LESSECRETS", motSecret[30];
int essais = 10, finDuWhile = 0;//Les declarations sont faites tout au debut pour y avoir acces
char caractere, motTape[30];//La declaration du caractere tapé, du mot tapé et du mot secret
void tirerMot();
void fin();
char lireCaractere();//La fonction lireCaractere qui va jouer le role de la scanf
char analyser(char caractere);//La fonction analyser qui va verifier la presence de la lettre dans le mot secret