Tableau de meilleurs score
zackychan
-
[Dal] Messages postés 6373 Statut Contributeur -
[Dal] Messages postés 6373 Statut Contributeur -
Bonjour,
Je suis en école d'ingénieur, et nous devons programmer un jeu en c. Bref le jeu fonctionne mais deux soucis me freine dans mon avancée :
- La sauvegarde de notre avancée et pouvoir recharger la partie en cours
- Le classements des meilleurs scores dans un fichier texte. En effet j'ai un systeme de points et j'arrive seulement a afficher le score de la partie précédente en ecrivant et en lisant ce fichier texte.
Sur ce toute aide est bonne a prendre, je tiens à préciser que mon niveau est assez bancal en c approfondi.
Merci beaucoup d'avance !
Zack
Je suis en école d'ingénieur, et nous devons programmer un jeu en c. Bref le jeu fonctionne mais deux soucis me freine dans mon avancée :
- La sauvegarde de notre avancée et pouvoir recharger la partie en cours
- Le classements des meilleurs scores dans un fichier texte. En effet j'ai un systeme de points et j'arrive seulement a afficher le score de la partie précédente en ecrivant et en lisant ce fichier texte.
Sur ce toute aide est bonne a prendre, je tiens à préciser que mon niveau est assez bancal en c approfondi.
Merci beaucoup d'avance !
Zack
A voir également:
- Tableau de meilleurs score
- Tableau word - Guide
- Meilleurs sites de téléchargement - Accueil - Outils
- Tableau ascii - Guide
- Trier un tableau excel - Guide
2 réponses
Bonjour,
Je ne fais pas de C donc je doute pouvoir te répondre.
Quoi qu'il en soit, personne ne sera en mesure de correctement t'aider sans un minimum d'informations.
A commencer par : Quel code utilises tu pour "stocker" tes scores ?
Et pour ton autre question : Quelles sont les informations nécéssaires à la "reprise" de la parti précédente ?
Nous ne sommes pas devins ni dans ta tête... un minimum d'efforts dans la rédaction (et les détails fournis) de ta part s'impose...
Merci.
Je ne fais pas de C donc je doute pouvoir te répondre.
Quoi qu'il en soit, personne ne sera en mesure de correctement t'aider sans un minimum d'informations.
A commencer par : Quel code utilises tu pour "stocker" tes scores ?
Et pour ton autre question : Quelles sont les informations nécéssaires à la "reprise" de la parti précédente ?
Nous ne sommes pas devins ni dans ta tête... un minimum d'efforts dans la rédaction (et les détails fournis) de ta part s'impose...
Merci.
Salut Zack,
Jordane a raison, un format identifié comme .ini ou xml (ou le populaire YAML), présentent l'avantage de la flexibilité et seraient sans doutes la bonne façon de faire en réalité. Leurs désavantage est que tu dois utiliser une API ou une bibliothèque pour gérer ces formats sauf à tout coder toi même.
En guise d'alternative, si tu veux faire quelque chose de simple et portable, tu peux simplement enregistrer au format texte toutes tes données dans un certain ordre, et les relire dans le même ordre. Cela sera moins flexible, mais cela fera le job.
Tu utilises snprintf (C99) pour convertir de façon sécurisée tes nombres en char * sans dépasser la taille allouée à ta chaîne (et vérifier que la conversion s'est bien passée).
Pour l'opération inverse, tu convertis de char * à int avec strtol (ou strtod si c'est un double qui est attendu).
Quand à savoir ce que tu dois sauvegarder, c'est toi qui sais quelles sont les données qui représentent l'état du jeu.
En ce qui concerne les meilleurs scores, tu dois décider combien de scores tu conserves, si tu conserves le score et aussi un nom de joueur, et sauvegarder tout cela sous forme de texte, de manière similaire, éventuellement dans un fichier séparé. Une fois chargé en mémoire (sous forme de tableau, ou de tableau de struct si tu associes un nom à un score), tu devras bien sûr gérer l'insertion de nouveaux scores en maintenant un classement dans l'ordre décroissant.
Dal
Jordane a raison, un format identifié comme .ini ou xml (ou le populaire YAML), présentent l'avantage de la flexibilité et seraient sans doutes la bonne façon de faire en réalité. Leurs désavantage est que tu dois utiliser une API ou une bibliothèque pour gérer ces formats sauf à tout coder toi même.
En guise d'alternative, si tu veux faire quelque chose de simple et portable, tu peux simplement enregistrer au format texte toutes tes données dans un certain ordre, et les relire dans le même ordre. Cela sera moins flexible, mais cela fera le job.
Tu utilises snprintf (C99) pour convertir de façon sécurisée tes nombres en char * sans dépasser la taille allouée à ta chaîne (et vérifier que la conversion s'est bien passée).
Pour l'opération inverse, tu convertis de char * à int avec strtol (ou strtod si c'est un double qui est attendu).
Quand à savoir ce que tu dois sauvegarder, c'est toi qui sais quelles sont les données qui représentent l'état du jeu.
En ce qui concerne les meilleurs scores, tu dois décider combien de scores tu conserves, si tu conserves le score et aussi un nom de joueur, et sauvegarder tout cela sous forme de texte, de manière similaire, éventuellement dans un fichier séparé. Une fois chargé en mémoire (sous forme de tableau, ou de tableau de struct si tu associes un nom à un score), tu devras bien sûr gérer l'insertion de nouveaux scores en maintenant un classement dans l'ordre décroissant.
Dal
(FILE* fichier = NULL; char chaine[TAILLE_MAX] = ""; fichier = fopen("record.txt","w"); if (fichier != NULL) { fprintf(fichier, "\n\n\nLe score de la derniere partie est %d\n\n", points); fclose(fichier); } )(juste pour l'ecriture dans le fichier)justement pour la sauvegarde je ne sais pas du tout ce qu'il faut récuperer, j'imagine :
-carte n°? et position
-Force, Endurence, Chance etc...
-points
et stocker toutes ces informations dans un fichier texte pour ensuite le lire et en extraire la partie en cours mais il me faudrait juste un "exemple".
Merci beaucoup.
Explications disponibles ici : ICI
Merci d'y penser dans tes prochains messages.
Voir si ceci peut t'aider : https://openclassrooms.com/forum/sujet/lecture-d-un-fichier-ini-en-c
ou sinon dans un fichier xml
https://forums.commentcamarche.net/forum/affich-2519500-lire-un-fichier-xml-en-c