Ecrire dans un fichier

pitidragon Messages postés 27 Date d'inscription jeudi 28 février 2008 Statut Membre Dernière intervention 21 mai 2008 - 5 mai 2008 à 19:27
Cyr62110 Messages postés 65 Date d'inscription vendredi 10 février 2006 Statut Membre Dernière intervention 21 octobre 2009 - 6 mai 2008 à 09:02
Bonjour !

Je viens vous demandez de l'aide pour un programme en C. J'ai réalisé un démineur, jouable sur console, et je dois rajouter une fonction mais je bloque.

Je dois écrire dans un fichier les meilleurs scores. J'ai 4 niveaux de jeux possible, et je chronomètre chaque partie. Il me faut donc écrire cette valeur dans un fichier, en indiquand le meilleur temps pour chaque niveaux.

Un truc qui ressemblerai à ça :

       Démineur
       Meilleurs scores

Facile : ... secondes
Moyen : ... secondes
Difficile : ... secondes
Personnalisé : ... secondes

J'ai commencé à écrire la fonction qui me permet de faire ça :

void meilleur_score(int choix, double score)
{
    FILE *f;
   
    f=fopen("Score","wt");
    if(f==NULL)
    {
        perror("Erreur d'ouverture du fichier ");
    }
    fprintf(f,"    Démineur\n    Meilleurs Scores\n");
    fprintf(f,"\n");

    if(choix==1)
    {
        fprintf(f,"Facile : %lf secondes",score);
    }
    if(choix==2)
    {
        fprintf(f,"Moyen : %lf secondes",score);
    }
    if(choix==3)
    {
        fprintf(f,"Difficile : %lf secondes",score);
    }
    if(choix==4)
    {
        fprintf(f,"Personnalisé : %lf secondes",score);
    }
}

Choix me permet de savoir le niveau de difficulté, et score contient le temps de la partie.

Je ne sais pas comment faire pour toujours afficher le modèle écrit dessus, et simplement changer le score lorsque celui-ci est un meilleur score. Je ne sais pas si je me suis bien fait comprendre lol.

Merci de votre aide par avance :)

4 réponses

Cyr62110 Messages postés 65 Date d'inscription vendredi 10 février 2006 Statut Membre Dernière intervention 21 octobre 2009
5 mai 2008 à 20:13
Le mieux est de stocker tes temps seul dans un fichier à part et faire un fichier texte avec le texte destiné à être lu par l'utilisateur.
Sinon tu peut faire une recherche de caractéres pour retrouver tes temps et reécrire entierement en remettant tes temps.
La premiére methode est je pense la plus rapide.
Bye
0
pitidragon Messages postés 27 Date d'inscription jeudi 28 février 2008 Statut Membre Dernière intervention 21 mai 2008
5 mai 2008 à 20:30
Euh j'ai pas très bien compris. En fait dans un fichier j'écris le temps (juste celui de la dernière partie ou tous ?) Et dans un autre fichier j'écris le texte pour le joueur, auquel je rajoute le temps dedans ?

Je vois pas trop comment faire en fait pour savoir si le temps est bien un meilleur score, et comment l'écrire à la bonne place dans le fichier à lire.

Je te remercie de ton aide en tout cas
0
cs_p4l4din Messages postés 12 Date d'inscription mardi 24 juillet 2007 Statut Membre Dernière intervention 5 mai 2008
5 mai 2008 à 22:05
je pense que si tu sépares en deux fonctions ça vas être plus simple ... je trouve que les idées sont là mais elles sont un peu mélangées ...
à ta place je mettrai

une fonction qui au lancement du programme charge les 4 meilleurs scores du fichier.txt
/* si il existe pas cette fontion même le crée et le rempli par quatre 0 ... */  dans un tableau de 4 cases

puis apres ta fontion meilleur_scores qui dépendant du choix va comparer le score de la partie à une valeur du tableau des scores si c'est un meilleur score elle l'écrit dans fichier.txt ...
je crois que comme ca c'est plus simple
@+
0
Cyr62110 Messages postés 65 Date d'inscription vendredi 10 février 2006 Statut Membre Dernière intervention 21 octobre 2009
6 mai 2008 à 09:02
Bon je vais essayer d'être plus clair.
Tu créer un fichier qui contient tes 4 meileurs score sous forme binaire donc sans le formatage de fprintf. Une fois que tu lance ton logiciel tu charge ces quatres valeur et aprés tu n'as plus qu'as modifier ces valeurs si il y'as un nouveau meilleur score. Et donc aprés dans un autre fichier.txt que tu créer et qui est lisible par l'utilisateur, tu met tes meilleurs score avec le formatage de ta fonction.
Ce qui t'évitera de faire de la recherche de caractére dans ton fichier texte.

/*Exemple*/
void CreateMeilleurScoreFile()
{
FILE*fp;
fp = fopen("score.score","wb");
fwrite(0,sizeof(double),4,fp);
fclose(fp);
return;
}
double* RecupMeilleurScore()
{
double*score;
FILE*fp;
score = (double)malloc(4*sizeof(double));
fp = fopen("score.score","rb");
fread(score,sizeof(double),4,fp);
fclose(fp);
return score;
}
void ChangeMeilleurScore(double score,int difficulte)
{
FILE*fp;
fp = fopen("score.score","wb");
fseek(fp,difficulte,SEEK_CUR);
fwrite(score,sizeof(double),1,fp);
return;
}

Je ne l'ai ai pas testé donc il peut y avoir des erreurs.
Bye
0
Rejoignez-nous