我刚刚开始学习 pygame,而且我也不是 Python 专家。但是当我制作游戏时,我应该像 Tkinter 那样将游戏放在一个类中吗?我看过的教程都没有这样做,但我有点喜欢拥有类变量,而不必担心全局变量或返回值。有明显的优点或缺点吗?谢谢。
最佳答案
不 - 你不应该把整个游戏放在一个类中,除非它有意义。 我认为编写这些 2d 游戏是学习 OO 编程的最佳形式之一,这意味着您将在游戏设计中感到舒适时使用类和继承 - 而不仅仅是为了它。
Pygame 是一个不需要(有时不允许)您通过类继承来完成工作的模块。例如,如果您尝试从 Pygame 的 Surface
类继承,您将发现您的自定义类无法作为参数传递给需要 Surface 的函数。
但是,Pygame 是为您设计的,可以继承一个类:pygame.sprite.Sprite
。只要您在代码中使用 pygame.sprite.Group 及其派生对象容器(而不是列表、集合或字典), Sprite 就可以很好地工作。如果您有一个类层次结构,您还可以自己发现 OO 编程可以提供的许多细节
游戏中显示的所有对象,作为 pygame.sprite.Sprite 的子类。例如,所有物体、敌人、主角、镜头等......都需要有属性来记录它们的屏幕位置。但例如,只有敌人在被摧毁时才需要“point_value”。通过适当的类继承,您可以最大限度地减少所需的代码量。
但是为了控制游戏场景中的所有内容,Pygame 不提供基类 - 您必须创建自己的游戏循环,这很可能位于函数中 - 或者在您自己创建的类中,这不会从任何其他 Pygame 类继承。
例如,here我布置了一些代码作为“塔战略”游戏的基础。检查场景中的所有对象是否自然地从 BaseTowerTower
对象派生。
关于python - 我应该将我的游戏放在 pygame 类中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34958626/