« Pygame/Introduction au module Sprite » : différence entre les versions

Contenu supprimé Contenu ajouté
Aucun résumé des modifications
Argon.7600 (discussion | contributions)
Ligne 38 :
Enfin, la classe Group a deux autres méthodes qui vous permettent d'utiliser la méthode interne len(), récupérant le nombre de sprites contenus. Et l'opérateur "truth", qui vous permet d'écrire "if mygroup:" afin de vérifier si le groupe a des sprites ou non.
 
=Utilisation couplée des deux modulesclasses=
 
ÀArrivé cet instant, les deux classes semblent sympathiquementvraiment simples. Elles ne font pas beaucoup plus que ce que vous pouvez faire avec unune simple liste et votre propre classe d'objets dedu jeu. Mais il y a quelques gros avantages à utiliser les modules Sprite et Group ensemble. Un seul sitesprite peut être contenu dans autant de groupe que vous voulez. Rappelez-vous que aussitôt qu'un sprite n'est plus contenu par aucun groupe, il sera supprimé automatiquement supprimé (sauf si la référence de cet objet existe ailleurs que dans un groupe).
 
La première chose d'importanceimportante est que l'on a un moyen rapide et simple de catégoriserséparer les sprites en catégories. Par exemple, supposons un jeu de type pacman-like. Nous pourrions faire des groupes séparés pour les différents types d'objet dans le jeu., Lespar exemple, un pour les fantômes, un pour Pac et un pour les pilules. Quand pac mange une pilule de puissance, nous pouvons changer l'état de tous les fantômes paren uneagissant seule ligne de code poursur le groupe des fantômes. C'est plus rapide et plus simple que de boucler au travers d'une liste sur tous les objets du jeu et de vérifier si chacun d'entre eux est un fantôme, puis alors de le modifier.
Ajouter et déplacer des groupes et des sprites est une opération très rapide, plus rapide que d'utiliser des listes pour tout stocker. Ainsi, vous pouvez très efficacement changer les membres d'un groupe. Les groupes peuvent être utilisés pour fonctionner comme de simples attributs pour chaque objet du jeu. Au lieu de suivre un attribut comme "close_to_player" pour un groupe d'objets ennemis, vous pourriez les ajouter à un groupe séparé. Lorsque vous aurez besoin d'accéder à tous les ennemis qui sont proches du joueur, vous en aurez déjà la liste, au lieu de parcourir une liste de tous les ennemis, en vérifiant qu'elles ont l'attribut "close_to_player". Plus tard sur votre jeu, vous pourrez ajouter plusieurs joueurs, et au lieu d'ajouter des attributs supplémentaires "close_to_player2", "close_to_player3", vous pourrez facilement ajouter différents groupes correspondant à chacun de ces joueurs.
 
Un autre bénéfice important apporté par l'utilisation des modulesclasses SpritesSprite et GroupsGroup est que les groupes permettent la suppression facile des objets du jeu. Dans un jeu où beaucoup d'objets font référence à d'autres objets, quelques foisparfois, supprimer un objet peut être très difficile, parce que ça nécessite que sa référence ne soit plus contenue nulle part. Supposons que nous avons un objet qui "cherche" un autre objet par sa référence. Le chercheur sera alors un simple groupe qui fait référence à l'objet (ou aux objets) qui le recherchent. Si l'objet cherché est détruit, nous n'avons pas besoin de nous soucier de dire aux utilisateurs de cet objet d'arrêter d'utiliser sa référence. L'objet utilisateur de la référence peut voir lui même que son groupe est maintenant vide, et va agir en conséquence.
 
Encore une fois, la chose dont il faut se rappeler est que ajouter ou supprimer des sprites d'un groupe est une opération très peu consommatrice de temps de calcul. Vous pouvez être plus rapide en consituant directement plusieurs groupes pour contenir et organiser les objets du jeu. Ils peuvent êtrerester inutilisés et vides dans de grandes parties du jeu, vous n'avez pas besoin de vous en occuper, il n'y aura aucune contrepartie si vous créez directement tous les groupes dont vous pensez avoir besoin, sans les utiliser au premier abord.