XNA créer, instancier plusieurs objets à l'aide d'une boucle for [Résolu]

Signaler
Messages postés
5
Date d'inscription
jeudi 21 décembre 2006
Statut
Membre
Dernière intervention
30 mars 2010
-
Messages postés
5
Date d'inscription
jeudi 21 décembre 2006
Statut
Membre
Dernière intervention
30 mars 2010
-
Bonjour,

Je souhaiterai instancier un nombre X d'objets de ma classe Car à l'aide d'une boucle for.
exemple :

            for (int i = 0; i < 3; i++)
            {
                carOne = new Car(game, graphics, 100, Background.BACKGROUND_HEIGHT - 100, true);
                game.Components.Add(carOne);
            }

Dans cette exemple je n aurais qu'un seul objet affiché car je ne peux réutiliser le même nom "carOne" pour d'autre objet.
Comment faire pour que dans cette boucle 3 carOne soit crées

Merci d'avance pour vos réponses

4 réponses

Messages postés
268
Date d'inscription
lundi 1 mars 2004
Statut
Membre
Dernière intervention
19 avril 2012
11
Salut blackskiz, alors comme l'a dit Mattx tu peux aisément passé par la liste, car que tu instantie 3, 10, 100, x objets la méthode Add ajoutera ton objet à la fin de la liste. Par contre le coup de :

game.Components.Add(carOne);

c'est très mauvais tu va te taper x DrawableGameComponent d'un coup, les perfs vont baisser de manière significative. Le mieux que tu es à faire c'est de créer une class CarManager héritant de drawablegamecomponent, tu lui instantie une liste Car, avec une méthode Add tu ajoutes toutes tes voitures.

Ensuite dans la méthode Update tu parcours ta liste et tu mets à jour toutes les voitures. De même pour la méthode Draw.

Par contre si tu veux pouvoir accéder à une voiture par son nom écrit une fonction de ce style :

public Car GetCar(string Name)
{
   return m_listCar.Find(delegate(Car car) { return Car.Name == Name; });
}

Bonne continuation pour ton projet
}
Messages postés
3
Date d'inscription
lundi 21 avril 2008
Statut
Membre
Dernière intervention
21 avril 2008
1
Salut,

Tu peux utiliser une liste pour ça.

Exemple :

List<lalala> ListLalala = new List<lalala>();
lalala mon_objet = new Lalala();
ListLalala.Add(mon_objet);

Après tu récupere l'objet i :

ListLalala[i]

Voilà bonne continuation ;)
Messages postés
5
Date d'inscription
jeudi 21 décembre 2006
Statut
Membre
Dernière intervention
30 mars 2010

Merci de répondre aussi vite. Mais si j'utilise cette manière de faire dans ce cas il me faut connaitre à l'avance le nombre d'objets (ds mon exemple 3) afin que je les ajoute a la liste ListLalala à l'aide de la methode add(). Hors je peux avoir le besoin de créer 3, 10 ou n objets à instancier. Désolé de ne pas avoir été suffisamment clair et précis dans ma question initiale.
Messages postés
5
Date d'inscription
jeudi 21 décembre 2006
Statut
Membre
Dernière intervention
30 mars 2010

Merci de ton aide