Grâce à Python et la SFML, il est très facile de mettre en place un système de classe animé : Les animations sont sous forme de dictionnaire pour les sélectionner facilement, le reste est automatique.
class bSprite(sf.Sprite): """ Classe de base pour l'affichage de sprite """ def __init__(self, x, y, z, image): """ Initialise le sprite avec l'image et les coordonnées indiquées. """ Sprite.__init__(self, image, x, y) self.z = z self.x = x self.y = y self.width, self.height = self.GetSize() def Move(self, x, y): """ Move(self, x, y) Déplace le sprite de x, y pixels. """ Sprite.Move(self, x, y) self.x += x self.y += y def SetPosition(self, x, y): """ SetPosition(self, x, y) Positionne le sprite aux position x, y. """ Sprite.SetPosition(self, x, y) self.x = x self.y = y class bAnimatedSprite(bSprite): def __init__(self, x, y, z, animation_dic, curr_anim, anim_speed): """ Initialise un sprite animé avec un dictionnaire d'animation de la forme : { 'animation1':[image0, image1,...], 'animation2':[image0,....] } curr_anim: l'animation de départ, anim_speed: le nombre d'images par secondes """ bSprite.__init__(self, x, y, z, animation_dic[curr_anim][0]) self.anims = animation_dic self.anim_speed = anim_speed self.currimg = 0 self.__animlen = len(self.anims[curr_anim]) self.__curr_anim = curr_anim self.__clamp = 0 #Stocke l'avancement du temps en dessous de 1 def SetAnim(self, anim_name): """ Change l'animation du sprite pour celle indiqué dans son dictionnaire. """ self.__animlen = len(self.anims[anim_name]) self.__curr_anim = anim_name def Update(self, frametime): """ Met à jour l'animation en fonction du temps, à appeler à chaque tour de boucle. """ last = self.currimg self.__clamp += frametime*self.anim_speed next_curr, self.__clamp = divmod(self.__clamp, 1) self.currimg = int(((self.currimg+next_curr)%self.__animlen)) self.SetImage(self.anims[self.__curr_anim][self.currimg])