Domanda

Sto creando un gioco in Visual Studio 2008 e per creare livelli avrò due tipi di file (più di quello in realtà, ma questi due sono gli unici importanti per la mia domanda) che devo analizzare.Uno detterà il contenuto di un livello e sarà simile a questo:

LevelName = "Livello campione"

Oggetto1Tipo = "Oggetto personalizzato"

Oggetto1File = "WideFloor_DF"

Posizione oggetto1 = 600.600

Object2Type = "Cerchio"

Oggetto2Posizione = 550, 500

Oggetto2Massa = 5

eccetera.

L'altro detterà le proprietà per gli oggetti personalizzati e sarà simile a questo:

Nome = "Piano largo"

Massa = 1

GeometryMap = "WideFloor_GM"

IsStatico = vero

eccetera.

Non ho molta familiarità con le espressioni regolari (leggi:non mi piacciono perché assomigliano troppo al rumore di linea per essere facilmente compresi) e mi chiedevo se esiste un metodo più semplice rispetto all'utilizzo di tonnellate di espressioni regolari?

modificare:sapevo di aver dimenticato qualcosa!Odio davvero i file XML, quindi preferirei davvero non usarli (waaaaaaaay troppo prolisso per me).modifica 2:mi piace il formato che ho ideato e preferirei non cambiarlo.

È stato utile?

Soluzione

Che ne dici di usare file XML?Puoi leggerli e scriverli facilmente utilizzando gli oggetti XMLReader e XMLWriter e non dovrai affatto occuparti di Regex.

<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>     

Altri suggerimenti

Se hai comunque intenzione di avere i tuoi file in un formato leggibile dall'uomo, perché non utilizzare XML?

Se hai il controllo sul formato del file potresti provare qualcosa con un parser esistente, come file XML o INI, entrambi dotati di parser in .NET.

Se sei convinto del formato sopra indicato, potresti utilizzare uno strumento come Lex per generare il tuo parser per te.

Un approccio alternativo potrebbe essere quello di definire una classe che abbia proprietà/raccolte per contenere tutti questi dati di configurazione e renderla [serializzabile].È quindi possibile compilare una configurazione di esempio, serializzarla in un file e quindi ottenere un file di configurazione XML completo che è possibile modificare manualmente.Quando sei pronto per utilizzare la configurazione, deserializza nuovamente il file XML nell'oggetto di configurazione nella tua app.

Se insisti assolutamente nell'usare quel formato di file, puoi creare un oggetto che legga il file riga per riga, estraendo le cose dal lato sinistro di '=' e inserendole in un dizionario come Chiave e tutto a destra di '=' come valore.

Tuttavia, devo fare eco alle risposte di cui sopra che dicono di utilizzare un documento XML insieme a un oggetto XMLDocument.Hai esaminato LINQ to XML?

bene, se ho capito la tua domanda, vuoi un modo per strutturare il contenuto dei file in modo che l'analisi sia molto più semplice per te, XML è una buona scelta per questo, e XSD anche per descrivere il contenuto dei tuoi file xml, LINQ to XML renderà molto utile leggerlo da C#.

Se usi XML puoi deserializzare i file direttamente in un oggetto in modo da non doverlo analizzare affatto.

Perché non serializzare binariamente i tuoi oggetti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top