Pygame中的关卡设计

mpo*_*z08 3 python oop design-patterns pygame

嘿 - 我正在尝试使用Python的Pygame库设计我的第一个游戏,我想知道一般的关卡设计的最佳实践是什么.我很想听听你们认为用于管理关卡的好的面向对象设计模式.另外,我对Python很新 - 谢谢!

Dan*_*l G 8

对于这种类型的游戏,你的地图是以瓷砖为单位的(我假设你的级别是指个人级别,而不是管理所有级别).每个瓷砖都有

  • 相关图片(显示屏上的样子)
  • 一种类型(即墙壁,地面,陷阱等)

当我在Pygame中创建基于图块的游戏时,我通常会有一个Map包含当前地图的类:

  • pygame.Surface地图的(什么,你会被块传输到显示器)
  • 列表列表(即矩阵),其中每个项目都是一个Tile对象(我也做过游戏,你只有一个字符串,告诉你它是什么类型的瓷砖,然后你不需要一个单独的瓷砖类)

地图应该是相对静态的 - 你可以让它们在你踩到它们之后成为普通的图块(这很容易 - 当你做碰撞检测并且它是一个命中时,只需将该图块更改为另一个图块对象(可能是一个用于一个空的瓷砖)),但如果你可以帮助它,你不想要地图中的字符或可移动的块.由于可移动块有关于它们如何移动的规则,因此它不像更换瓷砖那么简单 - 您需要一整套逻辑,并且至少需要更改两个瓷砖(如果您有可以把块移到陷阱上 - 你必须分别记住它下面的东西 - bleh).在我看来,为每个移动的对象和项目创建一个类更容易.

简而言之,您有:

  • Tile
  • Map
  • Block
  • 其他可移动物体/精灵

这基本上就是你的整体水平.对于多个级别,如果各个级别始终相同,则可以只有一个Map对象列表,每个级别一个.


Gre*_*ill 6

如果这是你的第一个Pygame应用程序,不要花时间担心"面向对象的设计模式来管理级别".你现在需要做的是弄清楚如何让Pygame做你想做的事.

  • 你能展示你想要的一切吗?
  • 你的显示器是否没有闪烁?
  • 你能正确阅读用户输入控件吗?
  • 等等

用于管理级别的面向对象模式将在稍后发布.