我应该将我的游戏放在 class pygame 中吗?
Should I place my game in a class pygame?
我刚开始学习 pygame,我也不是 Python 的专家。但是当我制作游戏时,我应该像在 Tkinter 中那样将游戏放在 class 中吗? None 我看过的教程确实如此,但我有点喜欢使用 classes 变量,而不必担心全局变量或返回值。有明显的优点或缺点吗?谢谢
不 - 你不应该将整个游戏放在 class 中,除非它有意义。
我认为编写这些 2d 游戏是学习 OO 编程的最佳形式之一,这意味着您将在游戏设计中使用 classes 和继承 - 而不仅仅是为了它。
而 Pygame 是一个不需要(有时不允许)您通过 class inheritance.If 尝试继承自 [=41] 来完成您的工作的模块=] 的 Surface
class 例如,您会发现您自定义的 class 不能作为需要 Surface 的函数的参数传递。
然而,Pygame是为您设计继承一个class:pygame.sprite.Sprite
。只要您在代码中使用 pygame.sprite.Group
s 及其派生对象作为对象容器(而不是列表、集合或字典),精灵就可以很好地工作。如果您有一个 class 层次结构
在您的游戏中出现的所有对象,作为 pygame.sprite.Sprite
的子class。例如,所有物体、敌人、主角、镜头等……都需要有属性来记录它们在屏幕上的位置。但是,例如,只有敌人在被摧毁时才需要 "point_value"。通过适当的 class 继承,您可以最大限度地减少所需的代码量。
但是要在游戏场景中控制所有这些,Pygame 不提供基础 class - 你必须制作自己的游戏循环,这很可能在一个函数中 - 或者在 class 中你创建自己,它不继承任何其他 Pygame class.
例如,here 我设计了一些代码作为 "tower strategy" 游戏的基础。检查场景中的所有对象是否自然地派生自 BaseTowerTower
对象。
我刚开始学习 pygame,我也不是 Python 的专家。但是当我制作游戏时,我应该像在 Tkinter 中那样将游戏放在 class 中吗? None 我看过的教程确实如此,但我有点喜欢使用 classes 变量,而不必担心全局变量或返回值。有明显的优点或缺点吗?谢谢
不 - 你不应该将整个游戏放在 class 中,除非它有意义。 我认为编写这些 2d 游戏是学习 OO 编程的最佳形式之一,这意味着您将在游戏设计中使用 classes 和继承 - 而不仅仅是为了它。
而 Pygame 是一个不需要(有时不允许)您通过 class inheritance.If 尝试继承自 [=41] 来完成您的工作的模块=] 的 Surface
class 例如,您会发现您自定义的 class 不能作为需要 Surface 的函数的参数传递。
然而,Pygame是为您设计继承一个class:pygame.sprite.Sprite
。只要您在代码中使用 pygame.sprite.Group
s 及其派生对象作为对象容器(而不是列表、集合或字典),精灵就可以很好地工作。如果您有一个 class 层次结构
在您的游戏中出现的所有对象,作为 pygame.sprite.Sprite
的子class。例如,所有物体、敌人、主角、镜头等……都需要有属性来记录它们在屏幕上的位置。但是,例如,只有敌人在被摧毁时才需要 "point_value"。通过适当的 class 继承,您可以最大限度地减少所需的代码量。
但是要在游戏场景中控制所有这些,Pygame 不提供基础 class - 你必须制作自己的游戏循环,这很可能在一个函数中 - 或者在 class 中你创建自己,它不继承任何其他 Pygame class.
例如,here 我设计了一些代码作为 "tower strategy" 游戏的基础。检查场景中的所有对象是否自然地派生自 BaseTowerTower
对象。