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

blackskiz 5 Messages postés jeudi 21 décembre 2006Date d'inscription 30 mars 2010 Dernière intervention - 21 avril 2008 à 18:27 - Dernière réponse : blackskiz 5 Messages postés jeudi 21 décembre 2006Date d'inscription 30 mars 2010 Dernière intervention
- 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
Afficher la suite 

4 réponses

Répondre au sujet
MasterShadows 269 Messages postés lundi 1 mars 2004Date d'inscription 19 avril 2012 Dernière intervention - 22 avril 2008 à 19:48
+3
Utile
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
}
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de MasterShadows
cs_Mattx 3 Messages postés lundi 21 avril 2008Date d'inscription 21 avril 2008 Dernière intervention - 21 avril 2008 à 18:41
+1
Utile
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 ;)
Commenter la réponse de cs_Mattx
blackskiz 5 Messages postés jeudi 21 décembre 2006Date d'inscription 30 mars 2010 Dernière intervention - 21 avril 2008 à 19:27
0
Utile
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.
Commenter la réponse de blackskiz
blackskiz 5 Messages postés jeudi 21 décembre 2006Date d'inscription 30 mars 2010 Dernière intervention - 25 avril 2008 à 16:17
0
Utile
Merci de ton aide
Commenter la réponse de blackskiz

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.