Pygame 1.9.3:向组中添加精灵(没有职业)

问题描述:

好吧,我在我的游戏(玩家,老板,levelGoal ...)中有某些东西只在一个实例中在任何给定时间存在,并且因此我想通过让这些东西成为手动声明的精灵来简化我的代码 - 而不是先将它们存在为需要实例化为对象的类。Pygame 1.9.3:向组中添加精灵(没有职业)

(很多人会说这是最好的组一切成类,无论如何,但我是否不同意这一点 - it'd肯定会知道,以防万一解决的办法有用)

我会就像为了检测命中(并在屏幕上绘制)的目的而将这些精灵分组在一起。但是,我遇到了这个问题。我认为这将非常简单,使一个孤立的,“无类”的精灵,并将其添加到列表。

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' 

我GOOGLE了四处寻找这意味着什么,没有发现答案。为了检查我自己,我写了一个类+对象+组添加方案完全相同的程序:

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的文档,我不认为它必须是一个从类中产生的对象,才能被添加到一个组中,但它并没有具体说“无类”的精灵也是允许的。

我是Pygame的全新新人,因此我期望知道我错过了一些非常明显的东西,但是导致我认为应该允许进入组的分类精灵是group.add函数涉及特定的精灵名称和组本身 - 没有提及精灵属于的类。

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

blooby = pygame.sprite.Sprite()