Question

Je construis un jeu dans Visual Studio 2008 et afin de construire des niveaux, je vais avoir deux types de fichiers (plus que cela en fait, mais ces deux sont les seuls importants à ma question) je dois analyser. On dicte le contenu d'un niveau et ressemblera à quelque chose comme ceci:

levelName = "Niveau de l'échantillon"

Object1Type = "CustomObject"

Object1File = "WideFloor_DF"

Object1Position = 600600

Object2Type = "Cercle"

Object2Position = 550, 500

Object2Mass = 5

etc.

L'autre dictera les propriétés des objets personnalisés, et ressembler à quelque chose comme ceci:

Name = "Wide Floor"

Masse = 1

GeometryMap = "WideFloor_GM"

IsStatic = true

etc.

Je ne suis pas très familier avec les expressions rationnelles (lire: Je comprends les aime pas parce que le regard trop comme le bruit de la ligne facilement)? Et je me demandais s'il y a une méthode plus facile que d'utiliser des tonnes de regexes

edit: je savais que j'oublié quelque chose! Je déteste vraiment les fichiers xml, donc je préférerais vraiment ne pas les utiliser (waaaaaaaay trop verbeux pour moi). modifier 2: J'aime le format que je suis venu avec et je préfère ne pas changer

.
Était-ce utile?

La solution

Qu'est-ce que sur l'utilisation des fichiers XML? Vous pouvez lire et écrire facilement en utilisant des objets XMLReader et XMLWriter, et vous ne devrez pas traiter Regex du tout.

<Level name="Sample Level">
   <Object type="CustomObject" file="WideFloor_DF" positionX="600" positionY="600" />
   <Object type="Circle" file="WideFloor_DF" positionX="500" positionY="500" mass="5" />
</Level>     

Autres conseils

Si vous allez avoir vos fichiers au format lisible par l'homme de toute façon, pourquoi ne pas utiliser XML?

Si vous avez le contrôle sur le format de fichier que vous pouvez essayer quelque chose avec un analyseur existant, comme les fichiers XML ou INI, qui ont tous deux parseurs .NET.

Si vous vendiez sur le format ci-dessus, vous pouvez utiliser un outil comme Lex pour générer votre analyseur pour vous.

Une approche alternative pourrait consister à définir une classe qui a des propriétés / collections pour tenir toutes ces données de configuration, et de le rendre [Serializable]. Vous pouvez ensuite remplir à un exemple de configuration, sérialiser dans un fichier, puis vous avez un fichier de configuration XML complet que vous pouvez modifier manuellement. Lorsque vous êtes prêt à utiliser la configuration, il suffit désérialiser le fichier XML de nouveau dans l'objet de configuration dans votre application.

Si vous tenez absolument à utiliser ce format de fichier, vous pouvez construire un objet qui lit la ligne de fichiers en ligne, tirant les choses du côté gauche du « = » et de le mettre dans un dictionnaire comme la clé et tout à la droite du « = » comme valeur.

Cependant, je dois faire écho aux réponses ci-dessus qui disent utiliser un document XML avec un objet XMLDocument. Avez-vous regardé dans LINQ to XML?

bien, si je comprends bien votre question, vous voulez une façon de structurer le contenu des fichiers afin que l'analyse sera beaucoup plus facile pour vous, XML est un bon choix pour cela, et XSD aussi pour décrire le contenu de votre xml fichiers, LINQ to XML, il sera très bon pour le lire à partir de C #.

Si vous utilisez XML, vous pouvez deserialise les fichiers directement dans un objet afin que vous n'avez pas besoin d'analyser du tout.

Pourquoi sérialise pas vos objets binaires.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top