Faire une sauvegarde d'un jeu

Faire une sauvegarde d'un jeu - Java - Programmation

Marsh Posté le 12-06-2010 à 18:39:27    

Bonjour a tous,
 
Voila je me lance dans la sauvegarde d'un jeu que que j'ai créer à 90% dans le cadre de mes études.
 
Je veux sauvegarder la salle courante du joueur ainsi que les objets qu'il possède voici les bouts de code en question
 
Item

Code :
  1. public class Item
  2. {
  3.     public String description;
  4.     public double weight;
  5. /**
  6. * Constructeur
  7. */
  8. public Item(double weight, String description)
  9.     {
  10.         this.description = description;
  11.         this.weight = weight;
  12.     }
  13.    
  14. /**
  15. * Accesseure
  16. */   
  17.  
  18. public String getDescription()
  19. {
  20.     return description;
  21. }
  22. public double getWeight()
  23. {
  24.     return weight;
  25. }
  26. }


 
meme style pour les salles.
 
La gestion des commandes s'effectue dans ma classe principale  
 

Code :
  1. else if (commandWord.equals("sauvegarder" ))
  2.             sauvegarder();


 
Je voudrai donc une méthode public void sauvegarder() qui me permette de sauver tout cela
 
je me suis renseigner sur la sérialization ici
 
http://www.siteduzero.com/tutoriel [...] #ss_part_3
 
mais le problème c'est le  throws FileNotFoundException qui me renvoi un incompatibilité avec  
 

Code :
  1. public void actionPerformed(ActionEvent e)


 
Merci a tous
 
bastien
 

Reply

Marsh Posté le 12-06-2010 à 18:39:27   

Reply

Marsh Posté le 13-06-2010 à 00:23:35    

poste ton code qui pose problème... (ie l'implémentation de ta méthode sauvegarder())


---------------
Jubi Photos : Flickr - 500px
Reply

Marsh Posté le 13-06-2010 à 10:28:54    

j'ai pas mal avancé depuis, je suis parti sur la  base d'un fichier texte.
 
dedans j'écris ma salle courante puis je saute à la ligne et à chaque objet espacé d'un saut à la ligne
 

Code :
  1. public void sauvegarder()
  2.     {
  3.         // Crée un fichier texte
  4.          try{
  5.                 PrintWriter ecri = new PrintWriter(new FileWriter("sauvegarde.txt" ));
  6.                 ecri.print(play.getcurrentRoom() + System.getProperty("line.separator" ));
  7.                 ecri.print(play.getItems_sauv());
  8.                 ecri.flush();
  9.                 ecri.close();
  10.             }
  11.             catch (java.io.IOException e) {e.printStackTrace();}
  12.     }
  13.    
  14.    
  15.     public void charger()
  16.     {
  17.        BufferedReader lect ;
  18.  try
  19.  {
  20.   lect = new BufferedReader(new FileReader("sauvegarde.txt" )) ;
  21.   play.enterRoom(lect.readLine());
  22.   while (lect.ready()==true)
  23.   {
  24.    interpretCommand(lect.readLine());
  25.   }//while
  26.  }//try
  27.  catch (NullPointerException a)
  28.  {
  29.   System.out.println("Erreur : pointeur null" );
  30.  }
  31.  catch (IOException a)
  32.  {
  33.   System.out.println("Problème d'IO" );
  34.  }
  35. }//lecture


 
Le problème est maintenant le chargement, je récupère bien la bonne pièce cependant en fesant lect.readLine() je récupère un String comment puis je convertir en objet Room??
 
merci pour ton aide

Reply

Marsh Posté le 13-06-2010 à 10:34:03    

http://www.exampledepot.com/egs/ja [...] zeObj.html
 
1er lien sur google avec "deserialize java"
 
Faut un peu chercher quand même avant de poser des questions ..


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 13-06-2010 à 11:07:55    

Merci, j'ai trouvé cette page avant,  
 

Code :
  1. public void charger()
  2.     {
  3.        BufferedReader lect ;
  4.         try
  5.         {
  6.             FileInputStream fichier = new FileInputStream("sauv.tmp" );
  7.             ObjectInputStream ois = new ObjectInputStream(fichier);
  8.             Room load = (Room) ois.readObject();
  9.            
  10.            gui.print(play.getcurrentRoom().toString());
  11.            gui.print(load.toString());
  12.            play.enterRoom(load);
  13.            gui.print(play.getcurrentRoom().toString());
  14.          
  15.            
  16.         }//try
  17.         catch (java.io.IOException e)
  18.         {
  19.             e.printStackTrace();
  20.         }
  21.         catch (ClassNotFoundException e)
  22.         {
  23.             e.printStackTrace();
  24.         }
  25.     }//lecture


 
Lorsque je récupère mon object, je le cast de type Room le problème est que lorsque je charge dans une salle X, ma salle courante est vu comme étant salle X une fois que j'ai fais enterRoom qui permet de changer de salle, je reste dans ma salle X mais la si je getcurrentRoom, il me renvoi la salle load mais sans changement de salle
 
Merci bastien

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed