Trouver l'index d'une array multidimensionnel [Résolu]

Signaler
Messages postés
100
Date d'inscription
samedi 3 mai 2008
Statut
Membre
Dernière intervention
9 mars 2011
-
Messages postés
100
Date d'inscription
samedi 3 mai 2008
Statut
Membre
Dernière intervention
9 mars 2011
-
Bonjour, Bonsoir, je cherche une façons de trouver l'index de chaque item dans un array multidimensionnel.

Je donne un exemple fictif pour montrer se que je veut dire:
  int[,] Map = new int[x, y];
  foreach (int Texture in Map)
   {
   x = Texture.GetIndex(0); // returns x index
   y = Texture.GetIndex(1); // returns y index
   //Pu
is utilisation des valeur x et y..
}

Voici un second exemple fictif:

int[,] Map = new int[x, y];
foreach (int Texture in Map)
{
var x Map.Select((Texture, index, index2)> new
{x index, y index2}.Where(item == Texture).First().Position);
var y Map.Select((Texture, index, index2)> new
{x index, y index2}.Where(item == Texture).First().Position);
}

6 réponses

Messages postés
100
Date d'inscription
samedi 3 mai 2008
Statut
Membre
Dernière intervention
9 mars 2011
1
Ummm j'ai mieu ! Nouvelle class > "Object2D.cs"
public class  Object2D
    {
        public  int X;
        public  int Y;
        public  int Item;

        public Object2D(int x, int y, int item)
        {
            X = x;
            Y = y;
            Item = item;
        }
    }


Je change le int[,] de Map pour une definition telle que :
  foreach (string Line in Lines)
            {
                Line2 = Line.Split(",".ToArray());
                
                foreach (string TIL in Line2)
                {
                    Map[x2,y2] = new Object2D(x2, y2, int.Parse(TIL));
                    y2++;
                }
                x2++;
                y2 = 0;
            }
            return Map;

Je mets pas tout les detail, le reste du code est plutot compliquer tout sa pour dire que lors de la definition de chaque valeur dans map je leur accord une valeur x, y et on utilise comme cela:

   foreach (Object2D Texture in Map)
            {
                int x = Texture.X;
                int y = Texture.Y;
                int item = Texture.Item;
}


Voilla merci quand meme :)
Messages postés
100
Date d'inscription
samedi 3 mai 2008
Statut
Membre
Dernière intervention
9 mars 2011
1
Merci de votre futur aide :)
Messages postés
860
Date d'inscription
jeudi 4 mars 2004
Statut
Membre
Dernière intervention
19 août 2014
23
Bonjour,

C'est effectivement une question pertinente sur laquelle je ne me suis jamais posé car je ne me souviens pas avoir déjà utilisé un jour les tableaux multi-dimensionnels (à la limite les int[][] mais pas int[,]).

J'ai trouvé une réponse que je partage avec toi ici.
Il semblerait que le code suivant réponde à ta question:
int[,] map = new int[10, 20];
for (int x = 0; x < map.GetLength(1); x++)
{
  for (int y = 0; y < map.GetLength(0); y++)
  {
    // A toi de jouer...
  }
}

Note: j'ai peut-être inversé le x et y.

Tu trouveras aussi des choses ici.

Bon développement.

Billou_13

--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------
Messages postés
100
Date d'inscription
samedi 3 mai 2008
Statut
Membre
Dernière intervention
9 mars 2011
1
Bonjour,
J'avais déjà trouver ce code sur un autre site mais merci quand même :)

Sauf que se que tu fait ses trouver la hauteur et la largeur de "Map" au complet, se qui ne mes pas vraiment utile (Je connais déjà la taille), enfaite je cherche la position x, y de "Texture".

A se que j'ai lu je crois que sais faisable par LINQ mais étant habituer au 3.0 de Framework, je suis pas très familier avec le LINQ alors je me remets entre les main d'experts...

Merci. :D
Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
1 août 2013
12
J'aimerais bien aider mais je comprends pas le problème ^^
Quel est le souci avec la solution de billou_13 ?
Il ne cherche pas les dimensions du tableau Map, il parcourt l'ensemble des données qu'il contient, de la même manière que tu le fais avec ton foreach.

Peut être qu'en mettant le problème dans le contexte je comprendrai ce que tu cherches réellement à faire ;)
Messages postés
860
Date d'inscription
jeudi 4 mars 2004
Statut
Membre
Dernière intervention
19 août 2014
23
Bonsoir,

Sinon, tu as toujours la solution d'utiliser le tableau de tableau:
int[][] map = new int[n][];


C'est moins élégant mais tu auras moins de problème pour faire ce que tu souhaites....

Enfin, c'est à toi de voir mais dans tous les cas, la réponse m'intéresse !

Bon courage,

Billou_13

--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------