Gestion collision entre group et liste
Bonjour a toutes et a tous,
J'ai une premier classe qui hérite de pygame.sprite.Sprite et utilise le conteneur Group avec la méthose add() en autre :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| class Explose(pygame.sprite.Sprite): # Explosions enemyspaceship
burn = False
def __init__(self, x, y, file, scale_x=0, scale_y=0, range_number=5, explose_spped=5):
super().__init__()
self.images = []
for num in range(range_number):
img = pygame.image.load(f"data/{file}/{file}{num}.png").convert_alpha()
img = pygame.transform.scale(img, (scale_x, scale_y))
self.images.append(img)
self.index = 0
self.image = self.images[self.index]
self.explose_mask = pygame.mask.from_surface(self.image)
self.rect = self.image.get_rect()
self.rect.x = x
self.rect.y = y
self.counter = 0
self.explose_speed = explose_spped |
Et une autre classe qui utilise une liste pour stocker les objets :
Code:
1 2 3 4 5 6 7 8
| class spaceship():
def __init__(self):
self.image = pygame.image.load('spaceship0.png').convert_alpha()
self.spaceship_mask = pygame.mask.from_surface(self.image)
self.rect = self.image.get_rect()
self.rect.x = 50
self.rect.y = 350
... |
Est il possible de gérer les collisions entre ces 2 classes en utilisant quelque chose de ce genre :
Code:
1 2 3 4 5 6
| for d in hero_list:
for e in explose_group:
offset_x = h.rect.x - e.rect.x
offset_y = h.rect.y - e.rect.y
if e.explose_mask.overlap(h.spaceship_mask, (offset_x, offset_y)):
... |
Merci de votre aide .