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