comment les personnages d'un jeu peuvent changer d'apparence pendant leurs déplacements. L'utilisateur doit avoir l'impression que les personnages mangent, courent, nagent, etc.
Pour réaliser cela le plus simplement possible, tu peux associer plusieurs sprites à un Actor, dont un seul est visible à la fois. Le nombre de sprites est indiqué comme paramètre lors de la création de l'Actor. Les différents sprites doivent être enregistrés avec un numéro d'index.
EXAMPLES
Example 1: Pacman ouvre et ferme la bouche à chaque pas
Deux sprites pacman_0.gif et pacman_1.gif sont associés à l'Actor pacman. Ils sont affichés alternativement.
pacman_0.gif
pacman_1.gif
La méthode showNextSpriteaffiche chaque fois le sprite suivant. Comme il n'y a que deux sprites, ceux-ci apparaissent alternativement.
rois sprites différents spriteshead_0.png, head_1.png et head_2.png, sont associés à l'Actor Head. Ils sont affichés périodiquement, l'un après l'autre. En utilisant un GameGrid dont les cellules ont une taille de 1 pixel, on obtient des déplacements fluides des personnages.
La méthode getX()renvoie la coordonnée actuelle du centre de l'image. Dans une fenêtre de 600 × 600 pixels, l'Actor doit faire demi-tour à droite lorsque sa coordonnée atteint 500 et à gauche lorsqu'elle atteint 95.
Programme:
# Gg4a.pyfrom gamegrid import *
# ------------- class Head ---------------------------classHead(Actor):
def __init__(self):
Actor.__init__(self, "sprites/head.png", 3)def act(self):
self.move()
self.showNextSprite()
if (self.getX() > 500) or (self.getX() < 95):
self.turn(180)
# ---------- main ----------------------------
makeGameGrid(600, 600, 1, Color.yellow)
addActor(Head(), Location(135, 180))
addActor(Head(), Location(300, 450))
show()
doRun()
Pour animer un Actor pendant son déplacement, tu peux lui associer plusieurs sprites qui apparaissent alternativement. Tu indiques le nombre de sprites comme paramètre lors de la création de l'Actor. La méthode showNextSprite() affiche les images les unes après les autres. Après la dernière image, la première réapparaît.
À FAIRE PAR TOI-MÊME
1.
Deux sprites, fish_0.gif et fish_1.gif, sont associés à l'Actor Fish()..
Crée dans la fenêtre de jeu, avec l'image de fond reef.gif, trois Actors Fish animés aux positions (0, 0), (5, 0) et (1, 2). Fais-les se déplacer de cellule en cellule, comme dans l'exemple 1. Tu peux constater ici l'avantage de la programmation orientée objet : une fois que tu as défini un Actor avec son déplacement et son animation, tu peux en créer autant que tu le souhaites.
2.
Deux sprites, creature_0.gif et creature_1.gif, sont associés à l'Actor Creature(). Dans la méthode act(), l'Actor doit uniquement changer de sprite. Crée un terrain de jeu comportant 8 cellules horizontales et 8 cellules verticales, chacune d'une taille de 50 pixels, et place un Actor dans chaque cellule.
Pour cela, utilise deux boucles for :
for y in range(8):
for x in range(8):
addActor(Creature(), Location(x, y))