Python : comment appliquer un methode sur un groupe de sprit
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je suis un débutant, et j'essaye de coder un jeu de block breaker sans tutoriel.
Je code sur python avec pycharm et le module pygame.
Dans mon code, je crée un groupe de sprite, ce sont des blocks avec chacun une couleur, un nombre de point de vie ect... Seulement j'ai une méthode pour generé automatiquement ces blocks, ils ne sont donc pas définit individuelement.
Dans une autre partie de mon code, j'ai crée un balle qui rebondit sur une plateforme que le joueur contrôle, et rebondit aussi sur les blocks.
Je n'arrive pas a appliqué une méthode au blocks touchés pour qu'il perdent 1 de vie.
Soit ma méthode ne s'applique pas du tout, soit elle s'applique sur tous les blocks.
Pouvez-vous m'expliquer comment faire que que cette méthode s'applique uniquement sur les blocks touchés par la balle.
Si vous avez besoins de partie de code ou de tout le code faite le moi savoir je vous le donnerais volontiers.
- Python : comment appliquer un methode sur un groupe de sprit
- Citizen code python avis - Accueil - Outils
- Mot secret python pix ✓ - Forum Python
- Python est introuvable. exúcutez sans argument pour procúder ó l ✓ - Forum Python
- Python par la pratique : 101 exercices corrigés pdf - Forum Python
- Exercice python - Forum Python
3 réponses
bonjour,
Il est en effet préférable de partager ton code, de préférence un code que nous puissions tester. Tiens compte de ceci: https://codes-sources.commentcamarche.net/faq/11288-poster-un-extrait-de-code
Salut, dans ton main tu fais
if game.check_collide(game.ball, game.all_blocks): for blocks in game.all_blocks: blocks.damage()
Ce qui n'est pas logique puisque que ta méthode Game.check_collide retourne la liste des sprites en collisions.
Dons il faudrait faire un truc comme
for block in game.check_collide(game.ball, game.all_blocks): block.damage()
merci beaucoup cependant ce la ne regle pas mon problème
voici mon fichier "screen" :
import pygame pygame.image screen = pygame.display.set_mode((1080, 900))
et voila mon fichier "player":
import pygame pygame.init() class Player(pygame.sprite.Sprite): def __init__(self, game): super().__init__() self.game = game self.image = pygame.image.load('assets/paddle.png') self.image = pygame.transform.scale(self.image, (150, 25)) self.rect = self.image.get_rect() self.rect.y += 750 self.rect.x += 300 self.velocity = 15 self.accelerate = 1.3 def move_right(self): self.rect.x += self.velocity def move_left(self): self.rect.x -= self.velocity
D'où vient "pygame.sprite.collide_mask" dans la ligne 90 de game.py?
Je suis la meme personne seulement entre temps j'ai creé un compte
Mon code est diviser en plusieurs fichier
je vous envoie ces fichiers un par un.
ceci etait mon premier fichier "main"
ensuite voila le fichier " game " :
ensuite voici le fichier "ball" relatif a la balle :
enfin voici le fichier relatif aux blocks, nommée "block" :
je vous remercie pour votre aide
il demande aussi "screen" et "player"
qu'as-tu essayé pour tester qu'un bloc était touché?
je n'ai pas compris la question pardonnez moi