Sauvegarder des variables dans un fichier
Bonjour à tous !
Je suis en train de créer un programme qui sera un jeu. Ce dernier nécessitera plusieurs sessions de jeu pour en arriver à bout.
C'est pourquoi j'ai besoin d'une fonction de sauvegarde.
Le jeu étant plutôt simple dans sa conception, je n'aurais que 4 variables (3 int et 1 String) à sauvegarder pour pouvoir relancer le joueur où il s'est arrêté.
Quelle méthode est la mieux adaptée à votre avis ? Ecrire les variables dans un fichier ou serialiser un objet dans un fichier ?
Pour le 1er cas, il faudra écrire une variable par ligne non ?! Comment on fait pour changer de ligne ?
Pour charger le fichier il faut réussir à lire ligne par ligne pour avoir ligne1 = variable1, ligne2 = variable2, etc... Mais ça non plus je ne sais pas comment le faire.
Pour le 2e cas, je crois avoir réussi à sérialiser les variables que j'ai intégrées à un objet :
La classe qui contient mes variables :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| public class Variables implements Serializable {
public static String prenom = ""; // Le prénom du joueur
public static int genre; // Le genre du joueur
public static int situation; // L'étape sur laquelle le joueur s'est arrêté
public static int days = 0; // Le nombre d'étapes franchies
public Variables(String prenom, int genre, int situation, int days) {
this.prenom = prenom;
this.genre = genre;
this.situation = situation;
this.days = days;
}
} |
L'actionListener du bouton "sauvegarder" :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| sauvegarder.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JFileChooser sauver = new JFileChooser();
sauver.setDialogTitle("Sauvegarder");
sauver.showSaveDialog(null);
String nomFichier = sauver.getSelectedFile();
ObjectOutputStream oos;
try {
oos = new ObjectOutputStream(
new BufferedOutputStream(
new FileOutputStream(
new File(nomFichier))));
oos.writeObject(new base.Variables(base.Variables.prenom, base.Variables.genre, base.Variables.situation, base.Variables.days));
oos.close();
} catch (IOException f) {
f.printStackTrace();
}
}
}); |
Donc là je pense que j'ai sérialisé mon objet "Variables".
Maintenant ce dont j'ai besoin (sauf erreur de ma part) c'est désérialiser mon objet et de réattribuer ses variables aux variables déclarées static de ma classe Variables.
J'ai fait ça dans l'actionListener du bouton "charger" :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| loadGame.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JFileChooser ouvrir = new JFileChooser();
ouvrir.setDialogTitle("Charger un fichier de sauvegarde");
ouvrir.showOpenDialog(null);
String nomFichier = String.valueOf(ouvrir.getSelectedFile());
ObjectInputStream ois;
try {
ois = new ObjectInputStream(
new BufferedInputStream(
new FileInputStream(
new File(nomFichier))));
Object obj = ois.readObject();
Variables newVariables = (Variables) obj;
ois.close();
base.Variables.prenom = newVariables.prenom;
base.Variables.genre = newVariables.genre;
base.Variables.situation = newVariables.situation;
base.Variables.days = newVariables.days;
} catch (IOException g) {
g.printStackTrace();
} catch (ClassNotFoundException g) {
g.printStackTrace();
}
System.out.println(base.Variables.prenom);
System.out.println(base.Variables.genre);
System.out.println(base.Variables.situation);
System.out.println(base.Variables.days);
}}); |
Mais aux vues de ce qui sort dans la console, ça ne fonctionne pas...
Merci infiniment pour votre aide ! ;)