Bonjour à toutes et à tous !![]()
Je travaille actuellement sur un projet de jeu vidéo 2D. Celui-ci est bientôt terminé, et j'aimerais passer à l'étape de l'enregistrement des préférences de l'utilisateur.
Pour être plus clair, le jeu dispose d'un menu permettant de changer la résolution, la configuration des touches ou même de la partie. Afin que l'utilisateur ne soit pas obligé à chaque démarrage du jeu de changer la résolution (par exemple), j'aimerais stocker ces informations dans un fichier (XML ?) puis les restituer.
Actuellement, toutes les infos que je voudrais enregistrer sont contenues dans une classe "Config" à part en static. L'ensemble des classes du projet a accès à toutes les variables de ce fichier "Config". Il me suffirait donc de charger un fichier XML, plutôt que de mettre des valeurs par défaut à ces variables.
Avant de demander de l'aide ici, je me suis renseigné sur ce qu'on pouvait faire en XML, et j'ai découvert la classe "System.XML" qui permet facilement de lire et d'écrire dans des fichiers. Voici ce que j'ai fait pour m'entrainer un peu:
Ce code produit un fichier XML avec ce contenu:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 // Ecriture du fichier XmlTextWriter fichier = new XmlTextWriter("config.xml", null); fichier.WriteStartDocument(); fichier.WriteWhitespace("\n"); fichier.WriteWhitespace("\t"); fichier.WriteStartElement("resolution"); fichier.WriteWhitespace("\n"); fichier.WriteWhitespace("\t\t"); fichier.WriteStartElement("largeur"); fichier.WriteString("1280"); fichier.WriteEndElement(); fichier.WriteWhitespace("\n"); fichier.WriteWhitespace("\t\t"); fichier.WriteStartElement("hauteur"); fichier.WriteString("1024"); fichier.WriteEndElement(); fichier.WriteWhitespace("\n"); fichier.WriteWhitespace("\t"); fichier.WriteEndElement(); fichier.WriteEndDocument(); fichier.Close();
Maintenant, je passe à l'étape de la lecture et j'ai fait ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 <?xml version="1.0"?> <resolution> <largeur>1280</largeur> <hauteur>1024</hauteur> </resolution>
Ce code fonctionne bien, le tableau "resolution" contient bien les deux valeurs, mais est-ce vraiment la meilleur façon de procéder ? J'ai beaucoup de variables différentes, et je me vois mal enchaîner les "else if" dans la boucle principale.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 // Lecture du fichier XmlTextReader config = new XmlTextReader("config.xml"); config.WhitespaceHandling = WhitespaceHandling.None; int[] resolution = new int[2]; while (config.Read()) { if (config.LocalName == "largeur") resolution[0] = Convert.ToInt32(config.ReadString()); else if(config.LocalName == "hauteur") resolution[1] = Convert.ToInt32(config.ReadString()); }
De plus, à chaque modification par l'utilisateur via le menu, il faudra réécrire le fichier XML, mais devrais-je tout réécrire où il existe un moyen de changer uniquement la valeur entre telle ou telle balise ?
Maintenant, est-ce que XML est le meilleur moyen d'arriver à mes fins ? Comment font les jeux commerciaux pour enregistrer les préférences de ses utilisateurs ?
Merci d'avance pour vos réponses !![]()
Bonne soirée![]()
Partager