pygame.sprite.Sprite子类

时间:2016-10-16 16:59:49

标签: python class python-3.x oop pygame

我目前正在开发一款带有pygame的2D平台游戏,我发现了一个问题。我通常使用在main函数内部声明的单个sprite组来处理sprite渲染。现在我需要有一些特定的精灵超过其他人/精灵,有一个小组不会削减它,并且让多个小组刚刚铺设是一团糟。所以我决定将组添加到我的Entity类中:

class Entity(pygame.sprite.Sprite):
    entitiesTop = pygame.sprite.Group()
    entitiesMid = pygame.sprite.Group()
    entitiesBot = pygame.sprite.Group()
    entities = [entitiesBot, entitiesMid, entitiesTop]

    def __init__(self, force = None):
        pygame.sprite.Sprite.__init__(self)
        if force is None:
            if isinstance(self, Platform):
                Entity.entitiesTop.add(self)
            elif isinstance(self, (Bullet, Gun)):
                Entity.entitiesMid.add(self)
            else:
                Entity.entitiesBot.add(self)
        else:
            Entity.entities[force].add(self)

我使用其__init__方法自动将实体的所有其他子类添加到组中。我认为它在类中运行良好,因为当我初始化实体时错误没有显示,而是当我尝试运行此代码时

     for group in Entity.entities:

AttributeError出现了

AttributeError: type object 'Entity' has no attribute 'entities'

我对python OOP比较新,所以我不太清楚我在这里缺少什么。有谁知道这个解决方案?

1 个答案:

答案 0 :(得分:0)

富拉斯在评论中解开了这个谜团。我只是忘了删除班级的旧定义!傻我。它现在一切正常。