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()