Partage
  • Partager sur Facebook
  • Partager sur Twitter

Source pendu plus simple a mon gout

voila ma source qui me parrait plus simple

Sujet résolu
    7 mars 2006 à 1:23:36

    Bonjours,
    cette source pour le pendu me parait plus simple que celle du TP dans la partie II.


    /*
            Le pendu :
               Jeu ou il faut trouver un mot secret en moins d'un certain nombres de
               coups definit selon la difficulté.
    */

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

    #define TAILLE_MAX_MOT 50
    #define NOMBRE_MAX_MOT 100

    int main(int argc‚ char *argv[])
    {
        //declarations
        char c‚ cMaLettre‚ sMotSecret[NOMBRE_MAX_MOT][TAILLE_MAX_MOT]‚ sMonMot[TAILLE_MAX_MOT] = { '\0' }‚ sAncienMot[TAILLE_MAX_MOT];
        int nChoix = 0‚ nChance = 0‚ i = 0‚ nNombre2Mot = 0‚ nNombreMotChoisie = 0‚ nLongueurMot = 0;
        FILE* fDico = NULL;
        //creation de la liste de mots
        fDico = fopen("Dico.txt""r");
        if (fDico == NULL)
        {
                  printf("Probleme avec le dictionnaire de mots\n");
                  system("PAUSE");
                  exit(1);
        }
        i = 0;
        while(!feof(fDico))
        {
                              fscanf(fDico‚ " %s "‚ sMotSecret[i]);
                              i++;
        }
        nNombre2Mot = i;
        fclose(fDico);
        do
        {
            //presentation du programme
            printf("=== Le Pendu ===\n\n");
            //choix de difficultée
            printf("Choisissez votre niveau de jeu :\n");
            printf("1.Facil\n");
            printf("2.Moyenne\n");
            printf("3.Difficil\n");
            printf("Veuillez entrer le nombre qui correspond a votre choix : ");
            scanf("%Ld"‚ &nChoix);
            printf("\n");
            // variation du nombre de chance avec la difficulte
            switch(nChoix)
            {
                          case 1 :
                               nChance = 10;
                               printf("Vous avez %ld chances\n"‚ nChance);
                               break;
                          case 2 :
                               nChance = 7;
                               printf("Vous avez %ld chances\n"‚ nChance);
                               break;
                          case 3 :
                               nChance = 5;
                               printf("Vous avez %ld chances\n"‚ nChance);
                               break;
                          default :
                                  printf("%Ld est une donnee incorrecte‚ fin d'execution du programme\n");
                                  system("PAUSE");
                                  exit(0);
                                  break;
            }
            //choix du mot secret
            srand(time(NULL));
            nNombreMotChoisie = (rand() % (nNombre2Mot));
            i = 0;
            while(sMotSecret[nNombreMotChoisie][i] != '\0')
            {
                                                   i++;
            }
            nLongueurMot = i;
            printf("Le mot est en %Ld lettres\n"‚ nLongueurMot);
            for( i = 0; i < nLongueurMot; i++)
            {
                 sMonMot[i] = '*';
            }
            do
            {
                //affichage cache du mot
                printf("Quel est le mot secret ? %s\n"‚ sMonMot);
                //recuperer et traiter la lettre propopsée
                printf("Proposez une lettre : ");
                //vider le flux
                while (getchar() != '\n') ;
                cMaLettre = getchar();
                cMaLettre = toupper(cMaLettre);
                //compare avec les lettres du mot secret
                for (i = 0; i < nLongueurMot; i++)
                {
                    sAncienMot[i] = sMonMot[i];
                }
                nChoix = 0;
                for (i = 0; i < nLongueurMot; i++)
                {
                    if(sMotSecret[nNombreMotChoisie][i] == cMaLettre)
                    {
                                  sMonMot[i] = cMaLettre;
                                  nChoix = 1;
                    }
                }
                if(!nChoix)
                {
                              nChance––;
                }
                //si le mot a était trouvé
                nChoix = 0;
                for( i = 0; i < nLongueurMot; i++)
                {
                     if(sMotSecret[nNombreMotChoisie][i] != sMonMot[i])
                     {
                                                         nChoix = 1;
                     }
                }
                if(!nChoix)
                {
                           printf("Vous avez gagne !!!\n");
                           printf("Le mot etait bien %s.\n"‚ sMotSecret[nNombreMotChoisie]);
                           break;
                }
                printf("\n\n");
                // si 'il reste plus qu'une chance
                if (nChance == 1)
                {
                    printf("Vous n'avez plus le droit a l'erreur\n");
                }
                //si plus de chance quite la boucle
                else if(nChance == 0)
                {
                     printf("Vous avez perdu\n");
                     printf("Le mot etait  %s.\n"‚ sMotSecret[nNombreMotChoisie]);
                     break;
                }
                //sinon ca affiche le nombre de chance
                else
                {
                    printf("Il vous reste %Ld chances\n"‚ nChance);
                }
            }
            while(1);
            printf("\n");
            printf("Vouler vous rejouer ?\n");
            printf("1.Oui\n");
            printf("2.Non ( Quitter )\n");
            printf("Veuillez entrer le nombre qui correspond a votre choix : ");
            nChoix = 0;
            scanf("%Ld"‚ &nChoix);
            printf("\n");
            if(nChoix == 2)
            {
                      break;
            }
            cMaLettre = 0;
            for( i = 0; i < nLongueurMot; i++)
            {
                 sMonMot[i] = '\0';
                 sAncienMot[i] = '\0';
            }
            nChoix = 0;
            nChance = 0;
            i = 0;
        }
        while(1);
      return 0;
    }

    /* Programme réalisé par Nounours */



    sinon, je pense que en exercice suplementaire ca pourrait etre simpat de faire ensorte de creer une fonction meilleur score qui afficherais les meilleurs scores en question de temps ( ca permetterait de revenir un peu plus sur les fichiers et en plus on pourrais y ajuoter quelsque notion de temps geré avec le C.) Voila c'était une petite idées.

    Si, a vos yeux vous avez une source qui vous parait encore plus simple que celle du site ou le mien postez la. Où si vous ne comprenez pas la mienne !!! :D
    • Partager sur Facebook
    • Partager sur Twitter

    Source pendu plus simple a mon gout

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown