Partage
  • Partager sur Facebook
  • Partager sur Twitter

[C] Pendu améliorations !!!

problemes pour les améliorations du pendu !!! AIDE !!!

    8 mars 2006 à 19:04:02

    Bonjours a tous les Zéros !!!!

    Voici mon code pour le pendu avec les améliorations que j'ai faite (2 joueurs, dessin du pendu et refaire une partie):

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

    int gagne(int lettreTrouvee[]long tailleMot);
    int rechercheLettre(char lettre‚ char motSecret[]int lettreTrouvee[]);
    char lireCaractere();

    int main(int argc‚ char* argv[])
    {
        char tableau[1] = {0};
        char lettre = 0;
        char motSecret[100] = {0};
        char motSecret2[100] = {0};
        int *lettreTrouvee = NULL;
        long coupsRestants = 10;
        long i = 0;
        long tailleMot = 0;
        long choixMenu = 0;

        printf("Bienvenue dans le Pendu !\n\n");

        printf("Choisissez un mode de jeux:\n\n");
        printf("Tapez 1 pour le mode 1 joueur\n");
        printf("Tapez 2 pour le mode 2 joueurs\n\n");
        printf("Tapez 1 ou 2:");
        scanf("%ld"‚ &choixMenu);
        printf("\n");
       
        do
        {
                     
        switch(choixMenu)
        {
                         
                                              /*Mode 1 joueur*/                 
                         
        case 1:
       
        if (!piocherMot(motSecret))
            exit(0);

        tailleMot = strlen(motSecret);

        lettreTrouvee = malloc(tailleMot * sizeof(int));
        if (lettreTrouvee == NULL)
            exit(0);

        for (i = 0 ; i < tailleMot ; i++)
            lettreTrouvee[i] = 0;

        while (coupsRestants > 0 && !gagne(lettreTrouvee‚ tailleMot))
        {
            printf("\n\nIl vous reste %ld coups a jouer"‚ coupsRestants);
            printf("\nQuel est le mot secret ? ");

            for (i = 0 ; i < tailleMot ; i++)
            {
                if (lettreTrouvee[i])
                    printf("%c"‚ motSecret[i]);
                else
                    printf("*");
            }

            printf("\nProposez une lettre : ");
            lettre = lireCaractere();
     
            if (!rechercheLettre(lettre‚ motSecret‚ lettreTrouvee))
            {
                coupsRestants––;
            } 
           
            if(coupsRestants==9)
            {
        printf("\n");
        printf("          \n");
        printf("          \n");
        printf("          \n");
        printf("          \n");
        printf("        \n");
        printf("          \n");
        printf("––––––          \n\n\n");
            }
            else if(coupsRestants==8)
            {               
        printf("|\n");
        printf("|          \n");
        printf("|          \n");
        printf("|          \n");
        printf("|          \n");
        printf("|          \n");
        printf("|          \n");
        printf("––––––          \n\n\n");
            }
            else if(coupsRestants==7)
            {
        printf("|––––––––––\n");
        printf("|          \n");
        printf("|          \n");
        printf("|          \n");
        printf("|          \n");
        printf("|          \n");
        printf("|          \n");
        printf("––––––          \n\n\n");
            }
            else if(coupsRestants==6)
            {
        printf("|––––––––––|\n");
        printf("|          |\n");
        printf("|          \n");
        printf("|          \n");
        printf("|          \n");
        printf("|          \n");
        printf("|          \n");
        printf("––––––          \n\n\n");
            }
            else if(coupsRestants==5)
            {
        printf("|––––––––––|\n");
        printf("|          |\n");
        printf("|          0\n");
        printf("|         \n");
        printf("|            \n");
        printf("|          \n");
        printf("|          \n");
        printf("––––––          \n\n\n");
            }
            else if(coupsRestants==4)
            {
        printf("|––––––––––|\n");
        printf("|          |\n");
        printf("|          0\n");
        printf("|          |  \n");
        printf("|          |  \n");
        printf("|          \n");
        printf("|          \n");
        printf("––––––          \n\n\n");
            }
            else if(coupsRestants==3)
            {
        printf("|––––––––––|\n");
        printf("|          |\n");
        printf("|          0\n");
        printf("|         \\|   \n");
        printf("|          |  \n");
        printf("|          \n");
        printf("|          \n");
        printf("––––––          \n\n\n");
            }
            else if(coupsRestants==2)
            {
        printf("|––––––––––|\n");
        printf("|          |\n");
        printf("|          0\n");
        printf("|         \\|/  \n");
        printf("|          |  \n");
        printf("|          \n");
        printf("|          \n");
        printf("––––––          \n\n\n");
            }
            else if(coupsRestants==1)
            {
        printf("|––––––––––|\n");
        printf("|          |\n");
        printf("|          0\n");
        printf("|         \\|/  \n");
        printf("|          |  \n");
        printf("|         / \n");
        printf("|          \n");
        printf("––––––          \n\n\n");
            }
           
        }


        if (gagne(lettreTrouvee‚ tailleMot))
            printf("\n\nGagne ! Le mot secret etait bien : %s\n\n"‚ motSecret);
        else
        {
            printf("\n\nPerdu ! Le mot secret etait : %s\n\n"‚ motSecret);
            printf("|––––––––––|\n");
            printf("|          |\n");
            printf("|          0\n");
            printf("|         \\|/  \n");
            printf("|          |  \n");
            printf("|         / \\  \n");
            printf("|          \n");
            printf("––––––          \n\n\n");
        }
     
      free(lettreTrouvee);
      break;
     
                                              /*Mode 2 joueurs*/
     
      case 2:
      printf("Joueur 1: Entre un mot: ");
      scanf("%s"‚ motSecret2);
      printf("\n\n\n");
      printf("Joueur 2: Vous devez trouver le mot entre par le joueur 1:\n\n");

      do
        {
            printf("\n\nIl vous reste %ld coups a jouer"‚ coupsRestants);
            printf("\nQuel est le mot secret ? ");

            for (i = 0 ; i < tailleMot ; i++)
            {
                if (lettreTrouvee[i])
                    printf("%c"‚ motSecret2[i]);
                else
                    printf("*");
            }

            printf("\nProposez une lettre : ");
            lettre = lireCaractere();

            if (!rechercheLettre(lettre‚ motSecret2‚ lettreTrouvee))
            {
                coupsRestants––;
            }
        }while (coupsRestants > 0 && !gagne(lettreTrouvee‚ tailleMot));


        if (gagne(lettreTrouvee‚ tailleMot))
            printf("\n\nGagne ! Le mot secret etait bien : %s\n\n"‚ motSecret2);
        else
            printf("\n\nPerdu ! Le mot secret etait : %s\n\n"‚ motSecret2);
     
      break;
     
      default:
      printf("Vous n'avez pas fait de choix valide ! Le programme va s'arreter !\n");
     
      system("PAUSE");
      return 0;
           
    }

                                            /*Fin du switch*/

    do
      {
      printf("Voulez vous refaire une partie ? o pour OUI et n pour NON:");
      scanf("%s"‚ tableau);

      if (tableau[0] == 'o')
      {
           printf("Vous avez choisi de refaire une partie !\n\n");
      }
      else if (tableau[0] == 'n')
      {
           system("PAUSE");
           return 0;
      }
      else
      {
          printf("Vous n'avez pas fait de choix valide !\n\n");
      }
     
      }while (tableau[0] != 'o' && tableau[0] != 'n');
     
      coupsRestants=10;

      }while (tableau[0] = 'o');

        free(lettreTrouvee);

            system("PAUSE");
            return 0;
    }

                                              /*Les fonctions*/

    char lireCaractere()
    {
        char caractere = 0;

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

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

        return caractere;
    }


    int gagne(int lettreTrouvee[]long tailleMot)
    {
        long i = 0;
        int joueurGagne = 1;

        for (i = 0 ; i < tailleMot ; i++)
        {
            if (lettreTrouvee[i] == 0)
                joueurGagne = 0;
        }

        return joueurGagne;
    }

    int rechercheLettre(char lettre‚ char motSecret[]int lettreTrouvee[])
    {
        long i = 0;
        int bonneLettre = 0;

        for (i = 0 ; motSecret[i] != '\0' ; i++)
        {
            if (lettre == motSecret[i])
            {
                bonneLettre = 1;
                lettreTrouvee[i] = 1;
            }
        }

        return bonneLettre;
    }


    Bon voici les problemes qui ce posent:

    -Le premier c'est que la première lettre rentrée par l'utilisateur est considérée comme toujours fausse mais après sa va le programme s'éxécute bien.

    -Et le second problême c'est que mon mode deux joueurs marche pas. Quand je demande au joueur 1 de rentrer un mot c'est bon mais ensuite sa me mais tous de suite que j'ai gagner. On dirait que sa me saute un bout du code.

    Merci d'avance pour vos réponces j'espère que vous trouverez réponce a mes problêmes. Moi je retourne chercher pourquoi sa marche pas !!!
    • Partager sur Facebook
    • Partager sur Twitter
      12 mars 2006 à 11:46:46

      C'est bon j'ai enfin trouvé le probleme pour le mode 2 joueurs je suis bien content en plus je l'ai trouvé par moi même !!!

      Mais un probleme perciste toujours:

      - La première lettre entrée par l'utilisateur est toujours considérer comme fausse même si elle ce trouve bien dans le mots !!!!!

      Merci d'avance pour vos réponces !!
      • Partager sur Facebook
      • Partager sur Twitter
        12 mars 2006 à 11:48:47

        Bravo a toi alors, mais tu devrais faire je crois des fichiers différents pour tes fonctions se serait plus "propre" non ? Enfin c'est toi qui voit ^^
        • Partager sur Facebook
        • Partager sur Twitter
          12 mars 2006 à 11:54:21

          Enfaite je voulai faire toute les améliorations et l'optimiser apres, le rendre plus claire mais bon je croi que je vai t'écouter !!!! :)


          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            12 mars 2006 à 19:38:36

            Oui il as raison.

            Moi perso j'ai fait une fonction void nommée affichePendu qui comme nom l'indique, affiche le pendu ^^

            Voilà @+
            • Partager sur Facebook
            • Partager sur Twitter
              12 mars 2006 à 23:42:35

              Ok je vai eisseiller de faire un fonction qui affiche le pendu mais avant j'aimerai régler mon probleme !!!!

              • Partager sur Facebook
              • Partager sur Twitter

              [C] Pendu améliorations !!!

              × 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