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

Contenu supprimé Contenu ajouté
Argon.7600 (discussion | contributions)
Argon.7600 (discussion | contributions)
Ligne 49 :
 
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 rester 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.
 
=Les différents types de groupe=
 
Les exemples ci-dessus et les raisons d'utiliser Sprite et les groupes sont seulement la partie émergée de l'iceberg. Un autre avantage est que le module sprite possède différents types de groupes. Ces différents types héritent tous du type ancêtre Group, mais ils possèdent également des fonctionnalités supplémentaires (où touchent à des fonctionnalités différentes). Voici une liste des classes de type Group présentent dans le module sprite.
Group
C'est le type standard de groupe, "sans supplément" , qui est explicité ci-dessus. La plupart des autres groupes sont dérivés de lui, mais pas tous.
GroupSingle
Celui-ci fonctionne exactement comme le groupe class régulier, mais il contient seulement le sprite le plus récemment ajouté. Ainsi, lorsque vous ajoutez un sprite à ce groupe, il "oublie" tout à propos du précédent qui était stocké. De cette manière, un groupe de ce type contient toujours seulement un ou zéro sprites.
RenderPlain
C'est un groupe standard dérivé de Group. Il a une méthode draw() qui dessine tous les sprites contenus à l'écran (ou sur une surface quelconque). Pour ce faire, il nécessite que tous les sprites qu'il contient possèdent les attributs "image" et "rect". Il utilise cela pour savoir sur lesquels agir, et où agir.
(blit==agir ?)
RenderClear
C'est d'érivé du groupe RenderPlain, et ajoute la méthode clear(). Cette méthode va effacer la position précédente de tous les sprites affichés, en utilisant pour les remplacer une image de fond. Elle est parfaite pour réaliser la suppression et l'effacement propre des sprites possédés par le groupe.
RenderUpdates
This is the cadillac of rendering Groups. It is inherited from RenderClear, but changes the draw() method to also return a list of pygame Rects, which represent all the areas onscreen that have been changed.
That is the list of different groups available We'll discuss more about these rendering groups in the next section. There's nothing stopping you from creating your own Group classes as well. They are just python code, so you can inherit from one of these and add/change whatever you want. In the future I hope we can add a couple more Groups to this list. A GroupMulti which is like the GroupSingle, but can hold up to a given number of sprites (in some sort of circular buffer?). Also a super-render group that can clear the position of the old sprites without needing a background image to do it (by grabbing a copy of the screen before blitting). Who knows really, but in the future we can add more useful classes to this list.