begin process at 2008 07 06 00:47:11
1 205 425 membres
7 nouveaux aujourd'hui
14 119 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Ecrire dans un fichier [ Divers / Général ] (pitidragon)

Ecrire dans un fichier le 05/05/2008 19:27:38

pitidragon
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 :)

Re : Ecrire dans un fichier le 05/05/2008 20:13:49

Cyr62110
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

Re : Ecrire dans un fichier le 05/05/2008 20:30:21

pitidragon
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

Re : Ecrire dans un fichier le 05/05/2008 22:05:21

p4l4din
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
@+

Re : Ecrire dans un fichier le 06/05/2008 09:02:43

Cyr62110
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


Classé sous : fichier, choix, score, fprintf, if

Participer à cet échange

Pub



Appels d'offres

Plugin Dialer outlook
Budget : 2 000€
Travail graphique- ill...
Budget : 1 000€
creation de marque et ...
Budget : 1 000€

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS