【问题标题】:Pygame 1.9.3: Adding sprite (without class) to a groupPygame 1.9.3:将精灵(无类)添加到组
【发布时间】:2017-04-07 19:42:55
【问题描述】:

好吧,我的游戏中有某些东西(玩家、老板、关卡目标......)在任何给定时间只需要存在于一个实例中,因此我想通过让这些东西手动来简化我的代码- 声明的精灵——而不是首先作为需要实例化为对象的类存在。

(很多人会说最好将所有内容归类,但无论我是否同意——知道一种解决方法肯定会很有用,以防万一。)

不过,为了命中检测(并被绘制到屏幕上),我希望将精灵分组。但是,我对此有疑问。我认为制作一个孤立的“无类”精灵并将其添加到列表中会非常简单。

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 函数 涉及指定的特定精灵和组本身——没有提及精灵所属的类。

【问题讨论】:

    标签: python class pygame sprite


    【解决方案1】:

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

    blooby = pygame.sprite.Sprite()
    

    【讨论】:

      猜你喜欢
      • 2022-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-14
      • 1970-01-01
      • 1970-01-01
      • 2015-08-22
      • 1970-01-01
      相关资源
      最近更新 更多