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

Résolu
blackskiz Messages postés 5 Date d'inscription jeudi 21 décembre 2006 Statut Membre Dernière intervention 30 mars 2010 - 21 avril 2008 à 18:27
blackskiz Messages postés 5 Date d'inscription jeudi 21 décembre 2006 Statut Membre Dernière intervention 30 mars 2010 - 25 avril 2008 à 16:17
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

MasterShadows Messages postés 268 Date d'inscription lundi 1 mars 2004 Statut Membre Dernière intervention 19 avril 2012 12
22 avril 2008 à 19:48
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
}
3
cs_Mattx Messages postés 3 Date d'inscription lundi 21 avril 2008 Statut Membre Dernière intervention 21 avril 2008 1
21 avril 2008 à 18:41
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 ;)
1
blackskiz Messages postés 5 Date d'inscription jeudi 21 décembre 2006 Statut Membre Dernière intervention 30 mars 2010
21 avril 2008 à 19:27
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.
0
blackskiz Messages postés 5 Date d'inscription jeudi 21 décembre 2006 Statut Membre Dernière intervention 30 mars 2010
25 avril 2008 à 16:17
Merci de ton aide
0
Rejoignez-nous