好吧,我在游戏中有某些东西(玩家,boss,levelGoal ......),只需要在任何给定时间存在于一个实例中,因此我想通过让这些东西手动声明精灵来简化我的代码 - 比首先作为类存在而需要实例化为对象 .
(很多人会说最好将所有内容归类到课程中,但无论我是否同意这一点 - 如果知道解决这个问题的方法肯定是有用的 . )
为了进行命中检测(并被绘制到屏幕上),我想将精灵分组 . 但是,我遇到了这个问题 . 我认为制作一个孤立的“无类”精灵并将其添加到列表中会非常简单 .
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的文档,我认为它没有特别说精灵必须是一个从类中生成的对象才能被添加到一个组中,但它并没有特别说“无类别”的精灵也是允许的 .
我是Pygame的新手,所以我希望能够意识到我在这里遗漏了一些非常明显的东西,但是让我假设应该允许无类别精灵进入组中的是group.add函数只关注特定的sprite命名和组本身 - 没有提到精灵所属的类 .
1 回答
发生此错误是因为您尝试将
pygame.sprite.Sprite
类添加到组而不是实例 . 添加括号后,要创建实例/对象,它应该正常工作: