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ê.