29 mar
2007
2007
Les sprites
Bonsoir,dans ce billet je vais vous parler un peu des sprites de palib et de ce que j'en ai fait pour me simplifier l'utilisation.
Si vous avez suivi le day 4 du tutoriel sur palib.info www.palib.info/wikifr/doku.php, vous aurez appris qu'on peut afficher 128 sprites par écran, ces sprites étant numérotés de 0 à 127 (donc 256 en tout).
Ce tuto nous parle de palette de 16 couleurs, de 256, etc ... pour finir par nous expliquer que la plupart du temps, on allait utiliser des sprites de 256 couleurs.
Et utiliser un certain nombre de tailles, 8, 16, 32, 64, etc ...
Finalement, on apprend qu'une création de sprite, se fait par :
PA_CreateSprite(0, // ScreenOn voit donc entre autres qu'il faut un numéro de sprite et un numéro de palette, qu'on aura préalablement chargé avec
0, // Sprite number
(void*)vaisseau_Sprite, // Sprite name
OBJ_SIZE_32X32, // Sprite size
1, // 256 color mode
0, // Sprite palette number
50, 50); // X and Y position on the screen
PA_LoadSpritePalPour essayer de se simplifier tout ca, et surtout pour ne pas avoir à se souvenir des numéros de sprite, j'ai voulu laisser à un objet le soin de s'en charger pour moi. Le but étant d'encapsuler certaines fonctionnalités de sprites de palib dans un objet.
J'ai donc créé une classe Sprite :
on aurait à lui passer l'écran sur lequel on veut afficher le sprite, le numéro de palette (chargé au préalable avec loadpal (on verra plus tard que cette solution ne me plait pas non plus, et on l'encapsulera)), le pointeur vers le tableau qui représente le sprite, et sa taille.
Ce qui fait, qu'on a pas à se soucier du mode de couleur (256 par défaut), des positions X et Y (pour l'instant, elles seront déportées dans une méthode d'affichage) et surtout, du numéro de sprite.
Ainsi, on ne manipulera plus un "numéro", mais bien un objet, sur lequel on pourra appeler des méthodes.
La gestion du numéro est automatique, et pour cela, on utilise un vecteur statique d'entier pour indiquer si un numéro de sprite est déjà pris ou pas, en fonction de son écran.
Ce qui fait que maintenant, je pourrais utiliser mes sprites ainsi :
Sprite *sPion = new Sprite(ECRAN_DU_HAUT, numeroPalette,
vaisseau_Sprite, OBJ_SIZE_32X32);
sPion->afficheSprite(50, 50);
Il y a quelques méthodes supplémentaires dans la classe, comme masquerSprite, getWidth, getHeight, setPriority, etc ... c'est très incomplet encore, mais c'est largement étoffable, et ca le sera suivant les besoins que je découvrirai dans nos futurs développements.
Par exemple, pour gérer le déplacement du sprite avec le stylet...
Pour plus de renseignements, vous pouvez aller voir dans le code du puissance 4, les fichiers sprite.cpp et sprite.h
Pour plus d'explications sur le code de la classe, laissez un commentaire...
(ps : n'oubliez pas bien sur la destruction de l'objet avec delete, je n'ai pas encore regardé si on pouvait utiliser des pointeurs intelligents avec palib, mais pour l'instant, on le fait à l'ancienne)
Voila pour cette fois
Dans le prochain billet, je vous parlerai de la classe de gestion des palettes, car un numéro encore et toujours, est suceptible d'engendrer des erreurs, et puis ... je ne suis pas un numéro !!!!

Bonne prog,
Nico



2 commentaire(s)
29/03/2007 à 22:19:26 Dernière modif. : 29/03/2007 à 22:49:13


