在Python中保存/加载游戏级别的方法

时间:2011-02-11 21:58:54

标签: python yaml pygame pickle

我正在使用Python和PyGame编写游戏。 (这是在作业中进行的,因此建议另一个具有内置级别解析的游戏开发库是没有用的)

我在舞台现在是在游戏物理等是否齐全,但我还没有制定出一个方法保存和负荷水平进入游戏。以下是我到目前为止所考虑的内容:

1。方法头脑风暴

  • 已建议YAML(因此,PyYAML)处理级别输入/输出。
    • 以纯文字形式存储,但以结构化的mannar存储。
    • 易于编辑等--YAML的主要功能之一是易于人性化。
  • 使用泡菜
    • 我过去使用的 - 将列表保存为具有拆分项的单个项目以区分它们。
    • 同样,保存为纯文本,但使用了分离器的项目(例如,{><}如与学习驾驶日志使得它更难理解

2。数据表示

  • 每个级别都需要解析后续数据。数据类型旁边是粗体。
    • 球和圆的起始位置和特征 [两个列表]
    • 圈子的限制 [整数]
    • 允许的颜色 [定义列表颜色:真/颜色:假]
    • 强迫完成区别标准 [整数]
    • 任何必须出现在 [字符串列表]
    • 中的故事情节或教程文字
    • 级别名称和号码 [字符串列表]

所有我正在寻找的是实现这一目标的最佳方法的建议。

TL; DR - 将文件中的游戏关卡解析为Python / PyGame的最佳方式。

4 个答案:

答案 0 :(得分:8)

如果您不需要手动编辑或阅读任何其他程序中的关卡,请使用pickle

将您的关卡数据存储在一个Python对象中,并且(几乎)代码中的一行代码可以读写。

答案 1 :(得分:2)

Pickle是为这种事情而制造的。您不需要任何分隔符来区分列表中的项目;只是挑选整个清单。

答案 2 :(得分:1)

.txt文件的简单方法怎么样?

例如,如果它是2D游戏,则有id,所以3 =石头,4 =草,然后只是逐行阅读并转移到显示器。

这对级别编辑器很有用,因为它们很容易保存数据。如果它的重要数据需要加密,这不是一个好的选择。

答案 3 :(得分:0)

对程序中的持久性进行测试可能非常困难。例如,您是否可以测试每个级别是否会保存并加载完全相同的状态? (或者相对相同的状态 - 某些游戏可能具有不会完全重复的计时器状态。)

我的建议是使用可读的文本格式,因为这是我在程序中使用的。为什么要使用您无法轻易阅读或比较的内容?