Grupos
Colisão em Massa (ObjectGroup)
Módulo: PPlay.object_group | Dificuldade: Intermediário
Trabalhar com listas padrão do Python ([]) para gerenciar centenas de tiros e inimigos causa lentidão e erros ao remover objetos. O ObjectGroup é uma “pasta inteligente” que resolve tudo em uma linha.
1. Gerenciando Hordas
O ObjectGroup automatiza os loops de draw e update, limpando o seu código principal.
from PPlay.object_group import ObjectGroup
from PPlay.sprite import Sprite
# Instancia os grupos
tiros = ObjectGroup()
zumbis = ObjectGroup()
# Adiciona 50 zumbis
for i in range(50):
z = Sprite("zumbi.png")
z.set_position(i * 40, 200)
zumbis.add(z)
while True:
# Lógica do Tiro
if teclado.key_down("SPACE"):
tiros.add(Sprite("laser.png"))
# A MÁGICA DA COLISÃO (Sem loops complexos!)
for bala in tiros.get_all():
atingido = zumbis.collided(bala) # Retorna quem levou o tiro
if atingido:
zumbis.remove(atingido) # Remove da memória e da tela!
tiros.remove(bala)
print("Zumbi Eliminado!")
# Desenha 50 zumbis e todas as balas de uma vez
zumbis.draw()
tiros.draw()
janela.update()
💡 Dica do Sênior: Prevenção de Memory Leaks
Seja cuidadoso: objetos que saem da tela continuam existindo na memória. Sempre faça uma checagem simples no seu loop para dar .remove() em balas que passaram do limite da janela (ex: if bala.x > 2000: tiros.remove(bala)). O ObjectGroup cuida do Garbage Collector do Python para você.