[RESOLU]Faire une liste d’une liste

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
Judokalex
Messages : 17
Inscription : 13 Nov 2018 00:09

[RESOLU]Faire une liste d’une liste

Message par Judokalex » 01 Déc 2018 10:57

Bonjour à tous,
j’aimerais faire une liste d’une liste. Je m’explique:

Pour faire une liste, via using System.Collections.Generic on peut etablir un public List<int> MaListe = new List <int>();
Le int est un exemple on peut bien entendu effectuer cette opération avec des string des float etc
Mais dans la même idée j’aurais voulu avoir la possibilité de créér une liste<List> pour pouvoir ajouter des Listes à cette liste.
En effet, actuellement à l’étape de programmation de déplacements autonomes, en gros je regroupe les différentes possibilités de chemins (Chemin a: aller vers pivot1 puis pivot2 puis cible, chemin b: ... chemin x:)
Donc chacun des chemins dispose de plusieurs transform.
Le programme établissant lui même le nombre de pivots utilisés par chemins ainsi que le nombre même de chemins possible.
J’aurais voulu par conséquent créer une Liste<List> à laquelle on ajouterait une multitude de List<Transform> Car les listes offrent la possibilité d’ajouter autant de choses que l’on veut (contrairement aux Arrays) sans savoir à l’avance quelle sera sa taille
Dernière édition par Judokalex le 02 Déc 2018 17:33, édité 1 fois.

Avatar de l’utilisateur
simonj
Messages : 293
Inscription : 29 Nov 2015 20:47
Localisation : Lyon

Re: [MY - AL]Faire une liste d’une liste

Message par simonj » 01 Déc 2018 11:33

Salut,

Pour répondre basiquement à ton problème, tu peux très bien faire des liste de liste de liste, ...

Code : Tout sélectionner

List<List<Transform>> path = new List<List<Transform>>();
Après selon ton niveau en programmation, je te conseillerais de passer par des classes ou des structures pour stocker tes informations et éviter les List<List<...>> qui ne sont pas très lisibles et qui peuvent être vite limitant.

Code : Tout sélectionner

public class Path {
	public List<Transform> elements = new List<Transform>();
	// You can add some properties like interest of the path, the name, ...
	public float intereset = 0f;
}

List<Path> paths = new List<Path>();

Judokalex
Messages : 17
Inscription : 13 Nov 2018 00:09

Re: [MY - AL]Faire une liste d’une liste

Message par Judokalex » 01 Déc 2018 14:03

Nickel ça merci à toi! Et avec la premiere methode comment accèdes tu à une valeur transform de la liste secondaire de la liste principale?
path[0[0]] ça fonctionne?

Avatar de l’utilisateur
Max
Messages : 8765
Inscription : 30 Juil 2011 13:57
Contact :

Re: [MY - AL]Faire une liste d’une liste

Message par Max » 01 Déc 2018 16:51

Hello,
Judokalex a écrit :
01 Déc 2018 14:03
Et avec la premiere methode comment accèdes tu à une valeur transform de la liste secondaire de la liste principale?
path[0[0]] ?
Je dirais plutôt path[v1][v2]
Ceci dit, j'opterais pour le conseil énoncé par Simonj avec la seconde approche.
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

Judokalex
Messages : 17
Inscription : 13 Nov 2018 00:09

Re: [MY - AL]Faire une liste d’une liste

Message par Judokalex » 01 Déc 2018 18:18

D’accord je vais suivre vos conseils dans ce cas là mais je n’ai jamais eu l’occasion de faire de classe avec des listes, j’ai du mal à imagner comment rendre fonctionnel la classe avec la liste :/

Avatar de l’utilisateur
simonj
Messages : 293
Inscription : 29 Nov 2015 20:47
Localisation : Lyon

Re: [MY - AL]Faire une liste d’une liste

Message par simonj » 02 Déc 2018 12:18

Effectivement comme dit Max, c'est bien paths[0][0] si tu veux accéder au premier élément de la première liste.

Pour l'histoire des classes, ça deviens beaucoup plus clair à la lecture car pour accéder au premier élément de la première liste, tu fais paths[0].elements[0].

Si tu veux savoir d'autres choses sur comment mettre ça en place, n'hésites pas à poser tes questions car je ne sais pas ton niveau de connaissance donc difficile d'évaluer ce qui te bloque. Si ton problème est résolu et que tu ne souhaites pas aller plus loin, tu peux passer ton post en [RESOLU] :cote:

Judokalex
Messages : 17
Inscription : 13 Nov 2018 00:09

Re: [MY - AL]Faire une liste d’une liste

Message par Judokalex » 02 Déc 2018 17:32

Merci à vous en tout cas, ça m’a permis de me forger un peu plus sur l’utilisation des classes que je n’avais pas eu l’occasion de me servir jusqu’à maintenant.
Par ailleurs, j’ai pu contourner le probleme d’une maniere différente:
J’ai une liste qui etablie les differents vector3 de la solution nouvellement trouvée, à ce moment là je calcule la distance totale de ce nouveau chemin et je la compare à la distance du chemin le plus rapide trouvé
Si c’est plus rapide grace à cette nouvelle solution, j’enregistre la distance dans Meilleure distance et j’enrengistre chacune des positions dans une liste stockant le chemin le plus rapide!
Je reviendrai surement avec d’autres suestions, merci pour votre contribution!

Répondre

Revenir vers « (C#) CSharp »