Exemplo n.º 1
0
class BulletManager:
    def __init__(self, bullet_stats: BulletStats):
        self._bullets = Group()
        self._bullet_stats = bullet_stats

    def add(self, bullet):
        self._bullets.add(bullet)

    def update(self, elapsed):
        self._bullets.update(elapsed)

        # Get rid of bullets that have disappeared
        for bullet in self._bullets.copy():
            if bullet.rect.bottom <= 0 or bullet.rect.top >= config.screen_height:
                self._bullets.remove(bullet)

    def empty(self):
        self._bullets.empty()

    def draw(self, screen):
        self._bullets.draw(screen)

    def sprites(self):
        return self._bullets.sprites()

    def __iter__(self):
        return self._bullets.__iter__()
Exemplo n.º 2
0
class SpriteGroup:
    ALL_SPRITES = Group()

    def __init__(self):
        self.sprites = Group()

    @property
    def children(self):
        return self.sprites

    def add(self, sprite: Sprite):
        self.ALL_SPRITES.add(sprite)
        self.sprites.add(sprite)

    def remove(self, sprite: Sprite):
        self.ALL_SPRITES.remove(sprite)
        self.sprites.remove(sprite)

    def update(self):
        self.sprites.update()

    def draw(self, screen):
        for sprite in self.sprites:
            if hasattr(sprite, 'on_draw'):
                sprite.on_draw(screen)
            sprite.draw(screen)

    def empty(self):
        return self.sprites.empty()

    def __iter__(self):
        return self.sprites.__iter__()

    def __len__(self):
        return len(self.sprites)