[Java] Externaliser les parametres dans un xml

Externaliser les parametres dans un xml [Java] - Java - Programmation

Marsh Posté le 22-04-2009 à 19:35:46    

Bonjour,
Dans le cadre de mes études, je dois programmer un jeu d'aventure au format textuelle et il m'est demandé d'externaliser les paramètres du jeu dans un fichier xml afin de par exemple, pouvoir définir la répartition sur la carte, en pourcentage, des types des terrains ou la probabilité de trouver un monstre sur chaque unité de la carte.
Ayant plus ou moins fini la partie java, j'aimerais externaliser ces paramètres mais je ne comprends pas vraiment comment faire.
Je pense qu'il faut utiliser la réflexivité mais je ne vois pas vraiment comment.
Merci de bien vouloir m'éclairer.
Ci-dessous la classe GameMapCarre qui permet de générer la carte "manuellement" pour l'instant. Si vous désirez plus d'informations pour pouvoir m'aider, n'hésitez pas à demander.
 

Code :
  1. package etc.map;
  2. import java.util.*;
  3. import Thing.*;
  4. import etc.character.*;
  5. import etc.map.direction.*;
  6. import etc.map.terrain.*;
  7. import etc.policy.*;
  8. public class GameMapCarre<D extends Direction> extends GameMap<DirectionNSEW>{
  9. protected List<Characters<DirectionNSEW>> list ;
  10. public GameMapCarre(){
  11.  this.list= new ArrayList<Characters<DirectionNSEW>>();
  12. }
  13. public void init(HeroCharacter<DirectionNSEW> hero) {
  14.  MapUnit<DirectionNSEW> map= new MapUnit<DirectionNSEW>(Plain.plain);
  15.  MapUnit<DirectionNSEW> map2= new MapUnit<DirectionNSEW>(Forest.forest);
  16.  MapUnit<DirectionNSEW> map3= new MapUnit<DirectionNSEW>(Plain.plain);
  17.  MapUnit<DirectionNSEW> map4= new MapUnit<DirectionNSEW>(Mountain.mountain);
  18.  MapUnit<DirectionNSEW> map5= new MapUnit<DirectionNSEW>(Mountain.mountain);
  19.  MapUnit<DirectionNSEW> map6= new MapUnit<DirectionNSEW>(Mountain.mountain);
  20.  MapUnit<DirectionNSEW> map7= new MapUnit<DirectionNSEW>(Plain.plain);
  21.  map.addNeighbour(DirectionNSEW.north, map2);
  22.  map.addNeighbour(DirectionNSEW.east, map3);
  23.  map.addNeighbour(DirectionNSEW.south, map4);
  24.  map.addNeighbour(DirectionNSEW.west, map5);
  25.  map2.addNeighbour(DirectionNSEW.north, map6);
  26.  map2.addNeighbour(DirectionNSEW.west, map7);
  27.  Pepite pepite = new Pepite();
  28.  map2.addThings(pepite);
  29.  Meat meat = new Meat();
  30.  map.addThings(meat);
  31.  CheeseCake cheesecake = new CheeseCake();
  32.  map.addThings(cheesecake);
  33.  map.addThings(meat);
  34.  map.addCharacter(hero);
  35.  Wizard<DirectionNSEW> wizard = new Wizard<DirectionNSEW>(new Static(),"Gandalf",10000,0);
  36.  map2.addCharacter(wizard);
  37.  Seller<DirectionNSEW> seller = new Seller<DirectionNSEW>(new Static(),"shop",10000,0);
  38.  map3.addCharacter(seller);
  39.  Seller<DirectionNSEW> seller1 = new Seller<DirectionNSEW>(new Static(),"shop",10000,0);
  40.  map.addCharacter(seller1);
  41.  Orc<DirectionNSEW> chubaka = new Orc<DirectionNSEW>
  42.  (new RandomPolicy(),"Chubaka",40,2);
  43.  map.addCharacter(chubaka);
  44.  this.addCharacterList(chubaka);
  45. }
  46. public void addCharacterList(Characters<DirectionNSEW> chubaka){
  47.  this.list.add(chubaka);
  48. }
  49. public List<Characters<DirectionNSEW>> getCharacterList(){
  50.  return this.list;
  51. }
  52. }

Reply

Marsh Posté le 22-04-2009 à 19:35:46   

Reply

Marsh Posté le 22-04-2009 à 20:18:05    

Utilise la lib open source XStream.


---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
Reply

Marsh Posté le 22-04-2009 à 20:32:06    

J'ai eu un cours sur XML/JDOM et les DTD, est-ce que ça serait pas sensiblement la même chose?

Reply

Marsh Posté le 23-04-2009 à 14:45:48    

si tu veux externaliser tes paramètres dans des XML, je te conseilles chaudement la librairie castorXML
 
http://www.castor.org/xml-framework.html
 
jettes un coup d'oeil à cette page, tu constateras à quel point il est facile de stocker des objets dans des fichiers XML et de les récupérer ensuite.
 
Si tu veux utiliser ça, il te suffit donc de voir ta configuration comme un objet. Disons donc que tu crées une classe "Configuration", tu peux persister une instance de cette classe dans un fichier et la récupérer facilement.
 
Attention, ça marche très bien pour les types primitifs et les cascades d'objets mais quand tu as des collections ou des grappes d'objets, y'a du paramétrage à faire


Message édité par liouan le 23-04-2009 à 14:47:36
Reply

Marsh Posté le 26-04-2009 à 17:18:50    

Merci bien pour les conseils.

Reply

Sujets relatifs:

Leave a Replay

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