Comment utiliser les groupes de sprite dans pygame
J'ai donc appris à le point dans mon programme j'ai besoin de créer un groupe pour certains sprites que le joueur peut entrer en collision avec sans mourir (comme certains autres sprites j'ai peut-être sur l'écran).
J'ai parcouru Google, mais il semble que les officiels pygame documentation est inutile et/ou difficile à comprendre. Je suis à la recherche pour juste un tout petit peu de l'aide de quelqu'un qui connait un peu à ce sujet.
Tout d'abord, j'ai besoin de savoir comment créer un groupe. Faut-il aller dans le jeu initial de l'installation?
Puis l'ajout d'un objet à un groupe lors de sa création. Le site de pygame a ceci à dire sur le sujet:
Sprite.add(*groups)
Donc... comment fait-on l'utiliser? Disons que j'ai un sprite appelé gem. J'ai besoin d'ajouter des gemmes gemmes groupe. Est-il:
gem = Sprite.add(gems)
J'en doute, mais sans aucun des exemples d'aller sur le site, je suis à une perte.
En outre, j'aimerais être en mesure de modifier les attributs d'un certain groupe. Est-ce fait par la définition d'un groupe comme je le ferais d'une classe? Ou est-ce quelque chose que j'définir à l'intérieur de la définition de l'existant sprite, mais avec un 'if sprite dans le groupe'?
OriginalL'auteur user161592 | 2012-12-13
Vous devez vous connecter pour publier un commentaire.
Pour répondre à votre première question; la création d'un groupe que vous feriez quelque chose comme ceci:
Puis ajouter un sprite:
Concernant les attributs pour le groupe que vous souhaitez modifier cela dépend de ce qu'ils sont. Par exemple, vous pouvez définir quelque chose comme cela pour indiquer la direction du groupe:
Pas de problème. Vous pouvez trouver cet article utile - devshed.com/c/a/Python/...
OriginalL'auteur timc
Je sais que cette question a déjà été posée, mais la meilleure méthode est comme ce kelwinfc suggéré. Je vais essayer d'approfondir donc, c'est plus compréhensible.
Vous pouvez également ajouter plus avec
gems.add(some_sprite)
et retirer de la même manière avecgems.remove(some_sprite)
.L'OMI à l'aide d'une variable globale comme ça, surtout dans une classe
__init__()
méthode, est une très mauvaise pratique.Je dois admettre que 6 ans plus tard, je n'ai pas bien saisi toutes les mises en garde avec diverses pratiques. Pourriez-vous nous expliquer comment cette utilisation est mauvais? Ne pas dire je suis en désaccord, tout à la recherche de fondamentalement comprendre ce que vous avez souligné. Je n'ai pas encore de programme en Python, et je déteste avoir les vieilles habitudes ont la porter dans mes autres projets.
jtsmith: les variables Globales ont longtemps été considérés comme mauvais pour un nombre de raisons, aucun n'a rien à Python en particulier—mais ils sont fréquemment utilisées, en dépit de cela, car il rend le code plus court. Peu importe, dans ce cas, je pense qu'il aurait facilement pu être évitée par un simple passage de
gems
comme un argument deJewel
'méthode constructeur. Donc, je ne pense pas qu'il y a beaucoup d'excuse pour ce faire, ici sur ce site qui est utilisé par de nombreux les programmeurs débutants.OriginalL'auteur jtsmith1287
Il suffit d'appeler le super
__init__
fonction avec la liste des groupes. Par exemple:Puis, dans chaque classe de votre hiérarchie, vous devez définir un attribut de soi.les groupes et les super constructeur de rendre le travail de l'ajout de chaque instance pour ses groupes. C'est la solution la plus propre à mon avis. Sinon, il suffit d'appeler le super constructeur explicitement avec la liste des groupes dans chaque classe.
OriginalL'auteur kelwinfc
Plus facile encore, vous pouvez passer les sprites directement sur le constructeur:
OriginalL'auteur Norbert Wagner