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

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

Votre réponse

4 réponses

Meilleure réponse
Messages postés
269
Date d'inscription
lundi 1 mars 2004
Dernière intervention
19 avril 2012
3
Merci
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
}

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 104 internautes ce mois-ci

Commenter la réponse de MasterShadows
Messages postés
3
Date d'inscription
lundi 21 avril 2008
Dernière intervention
21 avril 2008
1
Merci
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
Messages postés
5
Date d'inscription
jeudi 21 décembre 2006
Dernière intervention
30 mars 2010
0
Merci
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
Messages postés
5
Date d'inscription
jeudi 21 décembre 2006
Dernière intervention
30 mars 2010
0
Merci
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.