Traitement de l'info depuis fichier .txt

Pour les scripts écrits en C#
Règles du forum
Merci de respecter la NOMENCLATURE suivante pour vos TITRES de messages :

Commencez par le niveau de vos scripts
DB = Débutant
MY = Moyen
CF = Confirmé

Puis le domaine d'application
-RS = Réseau
-AL = Algorithmie

Exemple :

[DB-RS] Mouvement perso multijoueur
ole
Messages : 68
Inscription : 31 Mai 2014 20:09

Traitement de l'info depuis fichier .txt

Message par ole » 06 Août 2015 11:01

Hello :),
je travaille sur mon générateur de map qui crée des objets contenant d'autres objets ( une maison contient x stockage qui contiennent x objets ).
Ces infos sont stockée dans un fichier texte ( afin de pouvoir par la suite sauvegarder l'état ).
je récupère les infos et les traites comme ceci :

les infos à récupérer dans le fichier texte :

.maison1.
armoire1,
pomme;
livre;
fusil;
armoire2,
...

Code : Tout sélectionner

using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using System.IO; 

public class Object_gen : MonoBehaviour {
	// lors de la création de l'object, génère une liste aléatoire d'objets qui sera stockée dans un fichier texte
	// si l'objet a déjà été créé, ce script récupère la liste d'objet
	List<string> buffer3 = new List<string>();
	string buffer2 ;
	string buffer;

	void Start () 
	{
		// récupère les données depuis le fichier texte et les ranges dans des listes
		TextReader reader;
		string fileName = "Res_externes/test.txt";
		reader = new StreamReader(fileName);
		string result = reader.ReadToEnd();
		reader.Close();
		string[] objtlist = result.Split('.'); // les valeurs impaires retournent les items généraux et les pairs leurs contenus.
		int lenght = objtlist.Length;

		for (int i=1;i<lenght;i++)
		{

			if(i%2 == 0)
			{

				string[] objtlist2 = objtlist[i].Split(','); // les valeurs impaires retournent les items généraux et les pairs leurs contenus.
				int lenght2 = objtlist2.Length;
				for (int j=1;j<lenght2;j++)
				{

					if(j%2 == 0)
					{
						string[] objtlist3 = objtlist2[j].Split(';'); // les valeurs impaires retournent les items généraux et les pairs leurs contenus.
						int lenght3 = objtlist3.Length;
						buffer3.Clear();
						for (int k=0;k<lenght3-1;k++)
						{
							buffer3.Add(objtlist3[k]); // troisième niveau d'info
						}
						foreach (string a in buffer3) {
								print (a);	
						}
					}
					else
					{
						print (objtlist2[j]); // deuxième niveau d'info
					}
				}
			}
			else
			{
				print (objtlist[i]); // premier niveau d'info
			}
		}

	}

}	

le résultat de mon print : ( le fichier texte contient que de la merde je voulais juste la structure )

Image


C'est pas super clair donc pour simplifier j'ai trois boucles imbriquée et chaque boucle me donne un niveau d'info
à la fin de ma troisième boucle si je stock chaque fois dans une variable l'objtlist correspondant j'ai 3 variables contenant Maison, une liste de container et une liste d'objet par container.

Voila pour l'introduction :p, si vous êtes toujours là, voila la question :

Comment imbriquer mes trois variables afin de ne pas perdre de l'info ( et que tout soit stocké avec ce qui s'y rapporte )

maison1 -> armoire 1 -> list objet
-> armoire 2 -> list d'objet

J'ai essayé en imbriquant des lists dans des lists ( list<list<list<string>>> ) mais je n'arrive pas à ajouter mes données dedans :/

merci d'avoir lu mes conneries ^^ !
En espérant ne pas être responsable d'une calvitie précoce à cause de mon code tout laid ^^.
Et en espérant avoir une solution à mon soucis :p

Répondre

Revenir vers « (C#) CSharp »