Pygame 1.9.3:向一个组添加精灵(没有类)

时间:2017-04-07 19:42:55

标签: python class pygame sprite

好吧,我在游戏中有某些东西(玩家,boss,levelGoal ......)只需要在任何给定时间存在于一个实例中,因此我想通过手动让这些东西来简化我的代码-declared sprite - 而不是首先作为Classes存在,需要实例化为对象。

(很多人会说最好将所有内容分组到课程中,但无论我是否同意这一点 - 如果知道解决这个问题的方法肯定是有用的。)

我希望将精灵分组,以便进行命中检测(并将其绘制到屏幕上)。但是,我遇到了这个问题。我认为制作一个孤立的“无类”精灵并将其添加到列表中会非常简单。

bloobList = pygame.sprite.Group()

blooby = pygame.sprite.Sprite

blooby.image = pygame.Surface([200,200])
blooby.image.fill([0,0,0])
blooby.rect = blooby.image.get_rect()

bloobList.add(blooby)

然而,当运行它时,应用程序在启动时崩溃。我的IDE打开了Pygame库中的sprite.py,带我到378行告诉我:

builtins.TypeError: add_internal() missing 1 required positional argument: 'group'

我在谷歌上搜索这意味着什么并没有找到答案。为了检查自己,我在完全相同的程序中编写了一个类+对象+组添加方案:

moochList = pygame.sprite.Group()

class Mooch(pygame.sprite.Sprite):
    def __init__(self):
        pygame.sprite.Sprite.__init__(self)
        self.image = pygame.Surface([200,200])
        self.image.fill([0,0,0])
        self.rect = self.image.get_rect()

stootch = Mooch()

moochList.add(stootch)

这个像往常一样完美。我检查了Pygame.org的文档,我认为它没有特别说精灵必须是从一个类中生成的对象才能被添加到一个组中,但它并没有特别说“无类别”的精灵也是允许的。 / p>

我是Pygame的全新新手,所以我希望能够意识到我在这里遗漏了一些非常明显的东西,但是让我假设应该允许无类精灵成为小组的是group.add函数只有涉及指定的特定精灵和组本身 - 没有提到精灵所属的类。

1 个答案:

答案 0 :(得分:0)

发生错误是因为您尝试将pygame.sprite.Sprite类添加到组而不是实例。添加括号后,要创建实例/对象,它应该可以正常工作:

blooby = pygame.sprite.Sprite()