Je viens vous soumettre mon code pour le dessin du pendu. Il fonctionne mais je le trouve long et je me demande si j'aurai pu faire autrement ...
Vos avis éclairés m’intéressent :).
Merci d'avance.
void affiche (long coupRestantsEnCours)
{
FILE* fichier = NULL;
char chaine[TAILLE_MAX] = "";
switch (coupRestantsEnCours)
{
case 0:
fichier = fopen("potence/potence0.txt","r");
if (fichier!=NULL)
{
while (fgets(chaine,TAILLE_MAX,fichier)!= NULL)
{
printf("%s",chaine);
}
fclose(fichier);
}
break;
case 1:
fichier = fopen("potence/potence1.txt","r");
if (fichier!=NULL)
{
while (fgets(chaine,TAILLE_MAX,fichier)!= NULL)
{
printf("%s",chaine);
}
fclose(fichier);
}
break;
case 2:
fichier = fopen("potence/potence2.txt","r");
if (fichier!=NULL)
{
while (fgets(chaine,TAILLE_MAX,fichier)!= NULL)
{
printf("%s",chaine);
}
fclose(fichier);
}
break;
case 3:
fichier = fopen("potence/potence3.txt","r");
if (fichier!=NULL)
{
while (fgets(chaine,TAILLE_MAX,fichier)!= NULL)
{
printf("%s",chaine);
}
fclose(fichier);
}
break;
case 4:
fichier = fopen("potence/potence4.txt","r");
if (fichier!=NULL)
{
while (fgets(chaine,TAILLE_MAX,fichier)!= NULL)
{
printf("%s",chaine);
}
fclose(fichier);
}
break;
case 5:
fichier = fopen("potence/potence5.txt","r");
if (fichier!=NULL)
{
while (fgets(chaine,TAILLE_MAX,fichier)!= NULL)
{
printf("%s",chaine);
}
fclose(fichier);
}
break;
case 6:
fichier = fopen("potence/potence6.txt","r");
if (fichier!=NULL)
{
while (fgets(chaine,TAILLE_MAX,fichier)!= NULL)
{
printf("%s",chaine);
}
fclose(fichier);
}
break;
case 7:
fichier = fopen("potence/potence7.txt","r");
if (fichier!=NULL)
{
while (fgets(chaine,TAILLE_MAX,fichier)!= NULL)
{
printf("%s",chaine);
}
fclose(fichier);
}
break;
case 8:
fichier = fopen("potence/potence8.txt","r");
if (fichier!=NULL)
{
while (fgets(chaine,TAILLE_MAX,fichier)!= NULL)
{
printf("%s",chaine);
}
fclose(fichier);
}
break;
case 9:
fichier = fopen("potence/potence9.txt","r");
if (fichier!=NULL)
{
while (fgets(chaine,TAILLE_MAX,fichier)!= NULL)
{
printf("%s",chaine);
}
fclose(fichier);
}
break;
}
}
Précision :
j'ai crée 9 fichiers texte qui représentent l'évolution du dessin au fur et à mesure de la perte de coup restants. J'ai choisi de faire comme cela pour ne pas être limité à un affichage ligne par ligne (si j'avais utilisé une fonction de lecture de x ligne de mon unique fichier).
je fais appel à ma fonction "affiche" quand le joueur perd un coup restant.
Je n'ai aucun message d'erreur. Tu dis ça dans le sens ou j'ai pas besoin de créer une variable temporaire et que je devrais utiliser directement le "coupRestantsEnCours" que je récupère ?
Aucun message d'erreur, d'accord, mais des warnings:
pp.c:7:25: warning: initialization makes integer from pointer without a cast [-Wint-conversion]
long coupRestants = coupRestantsEnCours;
^~~~~~~~~~~~~~~~~~~
pp.c:123:16: warning: 'return' with a value, in function returning void
return 1;
Il faut toujours régler les warnings.
Concernant ton idée de créer 10 fichiers avec l'état du pendu, je ne suis pas pour: je créerais un fichier avec les 10 lignes, que je lirais dans une variable du type char[10][....] une fois pour toute avant de commencer le jeu. Et en fonction de l'avancement du jeu, j'afficherais la ligne nécessaire.
Edit: grillé....
- Edité par edgarjacobs 8 février 2019 à 15:14:56
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
Je ne sais pas pourquoi j'ai voulu envoyer un pointeur depuis le main. j'ai changé et ça fonctionne merci.
J'édite mon post.
edgarjacobs a écrit:
Concernant ton idée de créer 10 fichiers avec l'état du pendu, je ne suis pas pour: je créerais un fichier avec les 10 lignes, que je lirais dans une variable du type char[10][....] une fois pour toute avant de commencer le jeu. Et en fonction de l'avancement du jeu, j'afficherais la ligne nécessaire.
Je comprend ce que tu veux dire. J'ai choisi les dix fichier pour une raison "esthétique"...
c'est un peu long mais je post pour que vous compreniez :
À la manière dont tu présentes la chose, conserve l'affichage tel que tu le fais. C'est une bonne idée. J'avais imaginé des fichiers qui n'ajoutaient qu'une ligne à chaque stade d'erreur.
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
Je suis content du résultat mais je me demandais s'il y avait une "meilleure" méthode qu'utiliser un switch et 10 fichiers pour arriver à ce résultat.
Merci pour vos réponses et les corrections!
EDIT :
Merci je me demandais justement si je pouvais utiliser un %d dans le nom de mon fichier à ouvrir. C'est exactement le genre d'amélioration que j'attendais.
- Edité par NanoO33 8 février 2019 à 16:17:49
Tous les jours j'apprends! NanoO33
Dessin d'un personnage pendu
× 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.
Tous les jours j'apprends! NanoO33
Tous les jours j'apprends! NanoO33
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
Tous les jours j'apprends! NanoO33
Tous les jours j'apprends! NanoO33
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
Tous les jours j'apprends! NanoO33