pop70
Messages postés181Date d'inscriptionmardi 6 avril 2010StatutMembreDernière intervention 7 janvier 2012
-
16 févr. 2011 à 15:41
pop70
Messages postés181Date d'inscriptionmardi 6 avril 2010StatutMembreDernière intervention 7 janvier 2012
-
16 févr. 2011 à 15:55
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
pop70
Messages postés181Date d'inscriptionmardi 6 avril 2010StatutMembreDernière intervention 7 janvier 201210 16 févr. 2011 à 15:55
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.