python - Pygame 中的关卡设计

标签 python design-patterns oop pygame

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

最佳答案

在这种类型的游戏中,您的 map 是以图 block 形式表示的(我假设您所说的关卡是指一个单独的关卡,而不是管理您的所有关卡)。每 block 瓷砖都有

  • 关联图片(显示的样子)
  • 一种类型(即墙壁、地面、陷阱等)

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

  • map 的 pygame.Surface(您将向显示器显示的内容)
  • 列表列表(即矩阵),其中每个项目都是一个 Tile 对象(我也做过一些游戏,其中您只有一个字符串告诉您它是什么类型的图 block ,然后您不需要一个单独的 Tile 类)

map 应该是相对静态的 - 你可以让陷阱在你踩到它们之后变成普通的瓷砖(这很容易 - 当你进行碰撞检测并且它被击中时,只需将该瓷砖更改为不同的瓷砖对象(大概一个空的图 block )),但是如果可以的话,您不希望 map 中出现字符或可移动的 block 。由于可移动方 block 有自己的移动规则,这不仅仅是改变一个瓷砖那么简单——你有一整套逻辑,至少有两个瓷砖必须改变(如果你可以将方 block 移到陷阱上——然后你必须分别记住它下面是什么——呸)。在我看来,为每个移动的对象和项目设置一个类会更容易。

简而言之,您有:

  • 平铺
  • map
  • block
  • 其他可移动物体/ Sprite

这基本上就是您的全部水平。对于多个级别,如果各个级别始终相同,您可以只拥有一个 Map 对象列表,每个级别一个。

关于python - Pygame 中的关卡设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1871672/

相关文章:

python - Python集的Robot Framework实现

python - 我的自定义 django 登录 View 不起作用

java - java中的多重继承和方法覆盖问题

python - Web 编程中的常见模式是什么?

javascript - 对象的原型(prototype)方法仅返回函数定义,不执行。

Python电话簿

c++ - 有效地使用多个分配器

delphi - 将表单设置为框架的父级时没有内存泄漏?

用于类声明的 C++ 模板

python - Django:无法将空表单字段保存到数据库 - 基数为 10 的 int() 的无效文字: ''