Créer des sauvegardes (programmation C)
titocross
Messages postés
2
Statut
Membre
-
.N Messages postés 27 Statut Membre -
.N Messages postés 27 Statut Membre -
Bonjour tout le monde.
Je suis actuellement en train de créer un jeu de plate-forme (très basique : j'ai commencé la programmation il n'y a pas longtemps). J'ai a peu près tout fini sauf le système pour sauvegarder.
je voudrais que si le joueur arrête de jouer a un niveau quand il reprendra le jeu il pourra choisir de revenir a ce même niveau mais je n'ai aucune idée de la façon de faire (sauf si je laisse toujours le choix de niveau au joueur mais je préfèrerai éviter).
Si quelqu'un connait un endroit ou je pourrais apprendre comment faire merci de me l'indiquer.
Je suis actuellement en train de créer un jeu de plate-forme (très basique : j'ai commencé la programmation il n'y a pas longtemps). J'ai a peu près tout fini sauf le système pour sauvegarder.
je voudrais que si le joueur arrête de jouer a un niveau quand il reprendra le jeu il pourra choisir de revenir a ce même niveau mais je n'ai aucune idée de la façon de faire (sauf si je laisse toujours le choix de niveau au joueur mais je préfèrerai éviter).
Si quelqu'un connait un endroit ou je pourrais apprendre comment faire merci de me l'indiquer.
A voir également:
- Créer des sauvegardes (programmation C)
- Créer un lien pour partager des photos - Guide
- Comment créer un groupe whatsapp - Guide
- Créer un compte google - Guide
- Créer un compte gmail - Guide
- Creer un fichier .bat - Guide
3 réponses
Très simple, en fait, il s'agit juste de stocker la valeur du niveau dans un fichier. Si tu souhaites implémenter ton jeu de plateforme pour qu'il créer le fichier en question dans le répertoire personnel de l'utilisateur, il faut :
-Sous Windows : créer ton fichier dans un répertoire dédié à ton jeu (que tu créer s'il n'existe pas), dans le répertoire par défaut des fichiers relatifs aux différents programmes et spécifique à l'utilisateur actif. On trouve ce répertoire dans : C:\Nom de l'utilisateur\AppData\Roaming.
Tu peux récupérer celui-ci avec la variable d'environnement %APPDATA%.
-Sous Linux : créer ton fichier dans un répertoire dédié à ton jeu (que tu créer s'il n'existe pas), dans le répertoire personnel de l'utilisateur. On trouve ce répertoire dans : home/Nom de l'utilisateur.
Tu peux récupérer celui-ci avec la variable d'environnement $HOME.
Le répertoire de ton jeu devrait préférablement être précédé d'un ".", pour être un «fichier caché».
Pour récupérer une variable d'environnement sous un système quelconque, il faut utiliser la fonction de la librairie standard «getenv( const char * name )» (http://www.cplusplus.com/reference/cstdlib/getenv/
Pour manipuler des fichiers, il faut utiliser les fonctions :
FILE * fopen ( const char * filename, const char * mode );
int fclose ( FILE * stream );
int fputc ( int character, FILE * stream );
int fgetc ( FILE * stream );
ou encore
size_t fread ( void * ptr, size_t size, size_t count, FILE * stream );
size_t fwrite ( const void * ptr, size_t size, size_t count, FILE * stream );
Si tu es vraiment très très débutant, tu peux trouver un bon tutoriel sur le «Site du Zéro» (https://openclassrooms.com/fr/ à propos des bases de base du C : https://openclassrooms.com/fr/courses/19980-apprenez-a-programmer-en-c et des bases de base de la manipulation de fichier : https://openclassrooms.com/fr/courses/19980-apprenez-a-programmer-en-c/16421-lire-et-ecrire-dans-des-fichiers
-Sous Windows : créer ton fichier dans un répertoire dédié à ton jeu (que tu créer s'il n'existe pas), dans le répertoire par défaut des fichiers relatifs aux différents programmes et spécifique à l'utilisateur actif. On trouve ce répertoire dans : C:\Nom de l'utilisateur\AppData\Roaming.
Tu peux récupérer celui-ci avec la variable d'environnement %APPDATA%.
-Sous Linux : créer ton fichier dans un répertoire dédié à ton jeu (que tu créer s'il n'existe pas), dans le répertoire personnel de l'utilisateur. On trouve ce répertoire dans : home/Nom de l'utilisateur.
Tu peux récupérer celui-ci avec la variable d'environnement $HOME.
Le répertoire de ton jeu devrait préférablement être précédé d'un ".", pour être un «fichier caché».
Pour récupérer une variable d'environnement sous un système quelconque, il faut utiliser la fonction de la librairie standard «getenv( const char * name )» (http://www.cplusplus.com/reference/cstdlib/getenv/
Pour manipuler des fichiers, il faut utiliser les fonctions :
FILE * fopen ( const char * filename, const char * mode );
int fclose ( FILE * stream );
int fputc ( int character, FILE * stream );
int fgetc ( FILE * stream );
ou encore
size_t fread ( void * ptr, size_t size, size_t count, FILE * stream );
size_t fwrite ( const void * ptr, size_t size, size_t count, FILE * stream );
Si tu es vraiment très très débutant, tu peux trouver un bon tutoriel sur le «Site du Zéro» (https://openclassrooms.com/fr/ à propos des bases de base du C : https://openclassrooms.com/fr/courses/19980-apprenez-a-programmer-en-c et des bases de base de la manipulation de fichier : https://openclassrooms.com/fr/courses/19980-apprenez-a-programmer-en-c/16421-lire-et-ecrire-dans-des-fichiers
merci de ta réponse je vais essayer dans la semaine quand j'aurais le temps.
En gros si j'ai bien compris il suffit de créer un fichier dans lequel on stockera une sorte de code qui correspond a tel ou tel autre niveau ou autre option. Si ce n'ai pas sa merci de m'éclairer.
j'ai appris avec le tutoriel que tu as envoyer mais je crois que j'ai zaapé le chapitre sur écrire et lire dans des fichiers merci de l'avoir envoyer je ne pensais pas avoir raté de chapitre donc je n'étais même pas retourné sur se site^^.
En gros si j'ai bien compris il suffit de créer un fichier dans lequel on stockera une sorte de code qui correspond a tel ou tel autre niveau ou autre option. Si ce n'ai pas sa merci de m'éclairer.
j'ai appris avec le tutoriel que tu as envoyer mais je crois que j'ai zaapé le chapitre sur écrire et lire dans des fichiers merci de l'avoir envoyer je ne pensais pas avoir raté de chapitre donc je n'étais même pas retourné sur se site^^.
Si tu veux un exemple de comment sauvegarder un type unsigned long :
Tu n'a qu'à prendre ces fonctions, et les utiliser pour sauvegarder tes niveaux.
#include <stdlib.h>
#include <stdio.h>
int ulong_save(const char* filename, unsigned long value)
{
FILE * f = fopen(filename, "wb");
if (!f) return -1;
unsigned char bytes[4] =
{
(value >> 24) & 0xFF,
(value >> 16) & 0xFF,
(value >> 8) & 0xFF,
(value >> 0) & 0xFF
};
fwrite(bytes, sizeof(char), 4, f);
fclose(f);
return 0;
}
int ulong_read(const char* filename, unsigned long *value)
{
FILE * f = fopen(filename, "rb");
if (!f) return -1;
unsigned char bytes[4];
fread(bytes, sizeof(char), 4, f);
*value = 0;
*value |= bytes[0] << 24;
*value |= bytes[1] << 16;
*value |= bytes[2] << 8;
*value |= bytes[3] << 0;
fclose(f);
return 0;
}
int main()
{
unsigned long a;
ulong_save("abc.bin", 1234);
ulong_read("abc.bin", &a);
printf("a = %ld\n", a);
return 0;
}
Tu n'a qu'à prendre ces fonctions, et les utiliser pour sauvegarder tes niveaux.