Copie d'un objet en C# [Résolu]

Signaler
Messages postés
181
Date d'inscription
mardi 6 avril 2010
Statut
Membre
Dernière intervention
7 janvier 2012
-
Messages postés
181
Date d'inscription
mardi 6 avril 2010
Statut
Membre
Dernière intervention
7 janvier 2012
-
Bonjour, j'ai un petit problème, j'essaie de faire un tetris sur le principe suivant :
J'ai une classe Tetris qui contient un sprite "courant", celui qui est actuellement en mouvement ; et une liste de sprites, ceux qui sont empilés.

Voici mon problème : Quand le sprite courant atteint le sol, je l'ajoute à la liste des sprites empilés et je le remplace par un autre à partir d'une liste de sprites possibles (de façon aléatoire); seulement au lieu de faire une copie de sprite à partir de celui de la liste, le sprite renvoyé EST celui de la liste.


Voici l'implémentation :

La liste dans le constructeur, que je remplis de sprites dans une méthode Initialize() :
      List<Sprite> possiblesSprites; 
      possiblesSprites = new List<Sprite>();


Et la fonction qui donne un sprite :

        public Sprite GenerateSprite()
        {      
            
            Random random = new Random(DateTime.Now.Millisecond);
            int choice = random.Next(0, possiblesSprites.Count);
            Sprite sprite = possiblesSprites[choice]; /* C'est là le problème,
 au lieu d'un nouveau sprite j'ai celui de la liste */

            return sprite; 
        }


Comment fait-on pour faire une copie de l'objet en C# ? Parce que pour l'instant c'est celui de la liste qui se déplace, donc le jeu ne dure pas très longtemps

Merci d'avance pour votre aide


Pop70

1 réponse

Messages postés
181
Date d'inscription
mardi 6 avril 2010
Statut
Membre
Dernière intervention
7 janvier 2012
8
En fait, je viens de rechercher sur interner, si je comprends bien, en C#, chaque copie est l'équivalence d'une référence en C++ ?

En tout cas j'ai trouvé une solution, je crée un nouveau sprite auquel j'applique toutes les propriétés de celui choisit, mais ça me parait lourd comme solution.


Pop70