Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 06-11-2014 12:04:36

jessica08
Membre
Inscription : 06-11-2014

Jeu du pendu en langage C

Bonjour,

Je suis étudiante et j'ai le jeu du pendu avec dictionnaire de 10 mots à rendre et je suis bloqué dessus enfait j'arrive pas à faire le lien entre le pendu et le dico, j'ai fait quelque chose mais je n'en suis pas du tout sûre vu que je débute dans ce domaine.

Merci à vous car vraiment je galère. sad

Voici mon programme :


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

char lireCaractere();


char *strdup(const char *s) {
    char *d;
    d = malloc((strlen(s)+1) * sizeof(char));
    strcpy(d, s);
    return d;
}

int main(int argc, char *argv[])
{
    FILE *f; //lepointeur
    char **dictionnaire;
    char mot[81];
    size_t nmots;

    /* Lecture du dictiopnnaire */
    f = fopen("dico.txt", "r"); // on ouvre le dictionnaire en lecture seule
    fscanf(f, "%d", &nmots);
    dictionnaire = malloc(nmots * sizeof(char *));

    for (size_t i = 0; i < nmots; ++i) {
            fscanf(f, "%80s", mot);
            dictionnaire[i] = strdup(mot);
    }

    /* Test: affichage */
    for (size_t i = 0; i < nmots; ++i)
        printf("Mot no %d: '%s'\n", i, dictionnaire[i]);



  long nombrecoups = 10 //nombres de coups maximums est de 10
  char motsecret; //le mot secret à découvrir
  long nombrecaracteres = 0; // initialisation du nombre de caractère à 0
  long i = 0; // variable i
  char caractereentre;
  char *motdecouvert;
  printf("Bienvenue dans le pendu\n\n");
  nombreCaracteres = strlen(motMystere);
     motDecouvert = (char *) malloc(nombreCaracteres * sizeof(char));
        for(i=0;i<nombreCaracteres;i++) motDecouvert[i]='*';
  do
  {
    i = 0;
    printf("Il vous reste %ld coups a jouer\n", nombreCoups);

    printf("Quel est le mot cache : ");

    do
    {
      printf("%c", motDecouvert[i]);
      i++;
    } while(i != nombreCaracteres);
    printf("\n");
    printf("Proposez une lettre : ");
    caractereEntre = lireCaractere();
    trouverEtRemplacer(motMystere, motDecouvert, caractereEntre, nombreCaracteres);
    if(strchr(motMystere, caractereEntre) == 0)
    {

      nombreCoups--;
    }

  } while(nombreCoups != 0);
  */
  return 0;
}
char lireCaractere()
{
    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

}

void trouverEtRemplacer(char motSecret[], char motTrouver[], char lettre)
{
    char caractereActuel = 0;
    long i = 0;

    do
    {
        caractereActuel = motSecret[i];

        if(caractereActuel == lettre)
        {
            motTrouver[i] = motSecret[i];
        }
        i++;
    }while(motSecret[i] != '\0');
}
 

Hors ligne

#2 06-11-2014 12:34:34

captnfab
Admin-Girafe
Lieu : /dev/random
Distrib. : Debian Stretch/Sid/Rc-Buggy
Noyau : Linux (≥ 4.3)
(G)UI : i3-wm (≥ 4.11)
Inscription : 07-07-2008
Site Web

Re : Jeu du pendu en langage C

Bonjour,

Lorsque tu débutes en C, il est important d'y aller petit à petit. De rajouter une à une les fonctionnalités, et de ne pas en rajouter une avant d'avoir testé celle que tu viens de mettre.

Cela implique d'avoir un code qui compile à chaque étape. Là, ton code ne compile pas, il manque un « ; », tes variables sont parfois appelées avec et parfois sans majuscules (ce qui ne fonctionne pas), et tes fonctions ne sont pas tout le temps appelées avec le bon nombre d'argument. De plus, le code en lui-même contient des erreurs pas forcément évidentes à détecter une fois que tout est déjà écrit.

Voilà ce que je te conseille :

Tu pars d'une copie « pendu.c » de ton fichier, dans lequel tu ne gardes que la base.
Et tu tentes de le compiler à la main :

gcc pendu.c --std=c99 -o pendu


S'il y a des erreurs, tu les corriges. S'il y a des erreurs que tu ne comprends pas, tu demandes smile

Au bout d'un moment, tu n'auras plus d'erreur à la compilation, tu pourras tenter de lancer le fichier :

./pendu



Si cela produit le résultat attendu, tu peux commencer à rajouter une nouvelle fonctionnalité et la tester. Sinon, c'est qu'il y a un problème et qu'il te faut le résoudre smile
Mais dans ce cas, c'est bien plus facile parce que tu as beaucoup moins de code « non-testé » à la fois.


captnfab,
Association Debian-Facile, bépo.
TheDoctor: Your wish is my command… But be careful what you wish for.

Hors ligne

#3 06-11-2014 12:59:31

jessica08
Membre
Inscription : 06-11-2014

Re : Jeu du pendu en langage C

Merci,
mais comment je fais pour trouver le trouver le gcc std=c99 ?

Hors ligne

#4 06-11-2014 13:02:59

captnfab
Admin-Girafe
Lieu : /dev/random
Distrib. : Debian Stretch/Sid/Rc-Buggy
Noyau : Linux (≥ 4.3)
(G)UI : i3-wm (≥ 4.11)
Inscription : 07-07-2008
Site Web

Re : Jeu du pendu en langage C

C'est une commande qu'il te suffit de taper en ligne de commande depuis le dossier contenant le fichier pendu.c.
Si tu as déjà un logiciel pour compiler ton code, c'est que gcc est probablement déjà installé sur ta machine.
Sinon, il te suffit de l'installer smile

apt-get install gcc


captnfab,
Association Debian-Facile, bépo.
TheDoctor: Your wish is my command… But be careful what you wish for.

Hors ligne

Pied de page des forums