J'ai commencer le SDL et je suis rendu au TP de Mario Sokoban, seulement j'ai encore des difficultées avec la programmation modulaire. Je me suis alors dit que je devrais faire mon pendu a l'aide de différantes fonctions et m'assurer de bien comprendre avant de me lancer dans un jeux SDL. Mais j'ai beau lire et relire le chapitre je ne comprend pas comment je peu faire une fonction qui renvoit un tableau.
Je veut que mon motMystre soit choisit dans une autres fonction que le main alors de fopen à fclose, je veut tout mettre ce bout de code dans une autre fonction pourriez-vous m'aider en regardant mon code et m'expliquer comment faire?
int main(void) { //////////////////////////////////////////////// //Partie 1: Generer le mot mystere et afficher// // les etoiles selon le nombre de lettres // ////////////////////////////////////////////////
long numeroRandom = 0; long nombreMots = 0; char compteur;
FILE *fichier = NULL; char mot[20]; long i = 0;//i servira a ecrire les etoiles(*) qui cache les lettres non-trouver char motMystere[20];
char lettreEntree; long nombreCaracteres; int nombreVies = 5; int resultat = 0; int succes = 0;
fichier = fopen("Mots.txt", "r");//Ouverture du fichier
rewind(fichier);
while((compteur = fgetc(fichier)) != EOF)//EOF indique la fin du fichier texte. { if(compteur == '\n') {//Pour avoir le nombre exact il doit y avoir
nombreMots++;//une ligne vide à la fin du fichier. } }
rewind(fichier);
/*La boucle for servira ici a mettre le mot choisit au hazard
comme valeur a la variable motMystere*/ for(i = 0; i < numeroRandom; i++) {
fscanf(fichier, "%s", mot);//Place le curseur a la ligne voulut }
i = 0;
fscanf(fichier, "%s", motMystere);//motMystere prend comme valeur le mot secret
rewind(fichier);
fclose(fichier);
/*nombreCaractere indique le nombre de caractere du mot mystere et
définie dynamiquement la grandeur du tableau motRestant*/
nombreCaracteres = strlen(motMystere); char motRestant[nombreCaracteres];
/*Les nombre de caractere est contenu dans une variable et grace a la boucle
for, les nombre d'étoiles(*) voulut apparaitra a l'écran. Les étoiles indique
une lettre non trouver par le joueur.*/ for(i=0;i<nombreCaracteres;i++) {
motRestant[i] = '*'; }
motRestant[i] = '\0';
//////////////////////////////////////////////// // Partie 2: Recherche du caractere // // à l'intérieur de la chaine (motMystere) // // et actualiser le jeu selon le resultat // ////////////////////////////////////////////////
while((nombreVies > 0) && (succes < nombreCaracteres)) {
resultat = 0; printf("Il vous reste %ld vies", nombreVies);
line() printf("Mot Mystere: "); printf("%s", motRestant);
line() printf("Entrer une lettre: ");//Le joueur entre une lettre
scanf("%c", &lettreEntree);
line()
line()
lettreEntree = toupper(lettreEntree); // La lettre est mit en majuscule
//lit les autres caractères mémorisés un à un jusqu'à l'\n (pour les effacer) while(getchar() != '\n');
/*La boucle for vérifie chaque case de mon tableau motMystere pour voir
si la lettre entree correspond a ce qui est écrit dans une ou plusieurs
de ses cases*/ for(i=0;i<nombreCaracteres;i++) { if(motMystere[i] == lettreEntree) {
motRestant[i] = lettreEntree;
resultat++; }
}
if(resultat>0)//Si le joueur a trouver un lettre du mot mystere... {
succes = (succes + resultat); } else {
nombreVies--; }
}
if(succes == nombreCaracteres)//Le joueur gagne { printf("Bravo, le mot etais bien %s, vous avez gagne!", motMystere); } else//Le joueur perd { printf("Le mot etais %s. Vous etes mort.", motMystere); }
int main() { char *mot=choisir_mot(); if(mot!=NULL) printf("mot: %s\n",mot);
liberer_mot(mot);
return0; }
tout est plus ou moins dans le cour. Reste à le modifier selon tes besoin.
Programmation modulaire
× 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.