J'ai un peu avancer mais je rencontre des problèmes.
Voici la partie du main .c qui nous intéresse:
#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 lettre = 0; // Stocke la lettre proposée par l'utilisateur (retour du scanf)
char motSecret[100] = {0}; // Ce sera le mot à trouver
int *lettreTrouvee = NULL; // Un tableau de booléens. Chaque case correspond à une lettre du mot secret. 0 = lettre non trouvée, 1 = lettre trouvée
long coupsRestants = 6; // Compteur de coups restants (0 = mort)
long i = 0; // Une petite variable pour parcourir les tableaux
long tailleMot = 0;
int options = 0; // Variable permettant de se balader dans les menus du jeu
int modeDeJeu=1; //Permet de choisir le mode de jeu, mit par defaut sur <visible>
int difficulte=1; // Permet de choisir le mode de difficulte du jeu, mit par defaut sur <moyen>
if (!piocherMot(motSecret, difficulte))
exit(0);
Voici le dico.c:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#include "dico.h"
int piocherMot(char *motPioche, int difficulte)
{
FILE* dico = NULL; // Le pointeur de fichier qui va contenir notre fichier
int nombreMots = 0, numMotChoisi = 0, i = 0;
int caractereLu = 0;
char mode[5][20]={"facile.txt", "normal.txt", "difficile.txt", "tresdifficile.txt", "extreme.txt"};
dico = fopen(mode[difficulty], "r"); // On ouvre le dictionnaire en lecture seule
// On vérifie si on a réussi à ouvrir le dictionnaire
if (dico == NULL) // Si on n'a PAS réussi à ouvrir le fichier
{
printf("\nImpossible de charger le dictionnaire de mots");
return 0; // On retourne 0 pour indiquer que la fonction a échoué
// A la lecture du return, la fonction s'arrête immédiatement.
}
// On compte le nombre de mots dans le fichier (il suffit de compter les
// entrées \n
do
{
caractereLu = fgetc(dico);
if (caractereLu == '\n')
nombreMots++;
} while(caractereLu != EOF);
numMotChoisi = nombreAleatoire(nombreMots); // On pioche un mot au hasard
// On recommence à lire le fichier depuis le début. On s'arrête lorsqu'on est arrivés au bon mot
rewind(dico);
while (numMotChoisi > 0)
{
caractereLu = fgetc(dico);
if (caractereLu == '\n')
numMotChoisi--;
}
/* Le curseur du fichier est positionné au bon endroit.
On n'a plus qu'à faire un fgets qui lira la ligne */
fgets(motPioche, 100, dico);
// On vire l'\n à la fin
motPioche[strlen(motPioche) - 1] = '\0';
fclose(dico);
return 1; // Tout s'est bien passé, on retourne 1
}
int nombreAleatoire(int nombreMax)
{
srand(time(NULL));
return (rand() % nombreMax);
}
Comme ça le programme se finit tout simplement dans je fait une nouvelle partie, mon printf pour le chargement de dictionnaire ne marche même pas.
Je ne comprend pas pourquoi...
Si vous avez besoin du main complet n'hésitez pas
(POur le mode visible/intermédiaire/invisible, n'y faites pas attention j'implanterai ça plus tard)
Message édité le 02 juin 2020 à 20:24:58 par Darlinginthe002