Pygame 1.9.3:将精灵(没有 class)添加到组中
Pygame 1.9.3: Adding sprite (without class) to a group
好吧,我的游戏中有某些东西(玩家、老板、levelGoal...)在任何给定时间只需要存在于一个实例中,因此我想通过让这些东西来简化我的代码是手动声明的精灵——而不是首先作为 类 存在,需要实例化为对象。
(许多人会说无论如何最好将所有内容都分组到 classes 中,但不管我是否同意这一点——以防万一,知道解决这个问题的方法肯定是有用的。)
我希望将精灵分组,以便进行命中检测(并绘制到屏幕上)。但是,我对此有疑问。我认为制作一个孤立的 "classless" 精灵并将其添加到列表中会非常简单。
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'
我用谷歌搜索了这意味着什么,但没有找到答案。为了检查自己,我在完全相同的程序中写了一个 class+object+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 的文档,我认为它没有明确说明精灵必须是从 class 生成的对象才能添加到组中,但它没有具体说明 "classless" 精灵也是允许的。
请注意,我是 Pygame 的新手,所以我希望意识到我在这里遗漏了一些非常明显的东西,但是是什么让我假设 classless 精灵应该被允许进入组是 group.add 函数 仅 涉及指定的特定精灵和组本身——没有提及精灵所属的 class。
错误发生是因为您尝试将 pygame.sprite.Sprite
class 添加到组而不是实例。添加括号后,要创建一个 instance/object,它应该可以正常工作:
blooby = pygame.sprite.Sprite()
好吧,我的游戏中有某些东西(玩家、老板、levelGoal...)在任何给定时间只需要存在于一个实例中,因此我想通过让这些东西来简化我的代码是手动声明的精灵——而不是首先作为 类 存在,需要实例化为对象。
(许多人会说无论如何最好将所有内容都分组到 classes 中,但不管我是否同意这一点——以防万一,知道解决这个问题的方法肯定是有用的。)
我希望将精灵分组,以便进行命中检测(并绘制到屏幕上)。但是,我对此有疑问。我认为制作一个孤立的 "classless" 精灵并将其添加到列表中会非常简单。
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'
我用谷歌搜索了这意味着什么,但没有找到答案。为了检查自己,我在完全相同的程序中写了一个 class+object+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 的文档,我认为它没有明确说明精灵必须是从 class 生成的对象才能添加到组中,但它没有具体说明 "classless" 精灵也是允许的。
请注意,我是 Pygame 的新手,所以我希望意识到我在这里遗漏了一些非常明显的东西,但是是什么让我假设 classless 精灵应该被允许进入组是 group.add 函数 仅 涉及指定的特定精灵和组本身——没有提及精灵所属的 class。
错误发生是因为您尝试将 pygame.sprite.Sprite
class 添加到组而不是实例。添加括号后,要创建一个 instance/object,它应该可以正常工作:
blooby = pygame.sprite.Sprite()