0

我正在构建一个小型 Space Invaders 类型的游戏。或者至少尝试这样做。大多数事情都有效,但是,我遇到了一个反复出现的错误。游戏有时可以完美运行。但是,大约每隔一段时间,它就会在我爆炸了几个敌人后退出并给出以下错误: Traceback (most recent call last): enemies[count].render()pygame.error:display Surface quit。第二个错误似乎总是弹出,即使程序似乎运行良好。

这是我的渲染功能:

def render(self):
    screen.blit(self.bitmap, (self.x, self.y))

如果需要,我可以发布和/或链接到完整的代码。

4

2 回答 2

1

据我猜测,您可能会得到对已经被垃圾收集的表面的引用,并且当 pygame 无法对表面进行 blit 时,它正在退出。

要解决此问题,请检查您的代码并确保在将对象从游戏中删除时从“敌人”列表中删除它们。

另一种解决方案是使用 PyGame 内置的 Group 类。它将为您跟踪已删除的对象,您无需担心此类问题。

于 2012-04-08T16:50:41.863 回答
1

这更像是 pygame 中的一个问题,它会影响您的特定设置。尝试更改诸如 pygame 是否使用硬件加速(查看 pygame.screen.set_mode 上的文档)并切换它们。

于 2012-04-08T13:26:05.453 回答