如何保存和加载文本模式游戏

时间:2009-01-11 17:47:24

标签: c++ load save

我在C ++的一个简单的文本游戏的project of gamedev中进入了很晚。我研究了这个项目,我想我知道如何做所有事情,但我陷入困境:如何保存和加载游戏提议。我不想让事情为我完成,只有你告诉我一个方法。

6 个答案:

答案 0 :(得分:7)

我能想到的最简单的方法是拥有一个代表整个游戏“状态”的结构/类。在保存时,您只需将整个结构从内存写入磁盘即可。加载将是相反的。

它在磁盘上的格式完全取决于您,如果您的状态完全由简单数据类型组成,您可能只想编写二进制blob。或者您可能希望使用更多功能的东西,例如将其序列化为XML,这完全取决于您。

答案 1 :(得分:4)

我只是快速浏览一下帖子,但这是我的建议:

您的游戏状态可能包含几个结构和一些数据数组。结构将定义玩家(名字,健康,金钱,等等),武器(攻击,机会等),装甲等等......

首先,你要通过保存他的结构来编写玩家的状态。接下来将是玩家拥有的武器数量,其次是一系列武器结构,同样是装甲......

然后文件格式为

STRUCT player
INT num_of_weapons
STRUCT weapon
STRUCT weapon
STRUCT weapon
INT num_of_armor
STRUCT armor
STRUCT armor

可以使用fstream轻松完成。

答案 2 :(得分:3)

您描述的过程称为“序列化” - 即获取内存中对象并将其转换为可以保存到磁盘的某种形式。它可以像原始内存转储一样简单,也可以像XML那样复杂。

我建议您查看有关此主题的维基百科文章:http://en.wikipedia.org/wiki/Serialization

答案 3 :(得分:2)

我没有阅读您链接的网站,但您可能希望编写读取/写入基本文本文件的代码,以便加载/保存您的游戏。

首先,弄清楚如何格式化文本文件。例如,如果我正在编写一个允许玩家保存游戏的pacman游戏,那么文本文件可能如下所示:

5 
54700
3

我会编写代码来一次读取一行文件:

第1行:玩家所处的等级。

第2行:玩家拥有的点数。

第3行:玩家的生命数量。

Google搜索C ++文件输入/输出以找出如何编写实际代码。

答案 4 :(得分:1)

XML序列化似乎是最简单的解决方案。使用像TinyXML这样的小型轻量级库,它更容易。至于使文件不可读,您可以使用简单的XOR模糊处理和短键。或者您可以尝试JSON

答案 5 :(得分:0)

这完全取决于您的保存文件的复杂程度。如果只是几个整数,那么简单地编写几个函数就可以很容易地将这些值按指定的顺序写入文件,然后按照它们写入的顺序加载它们。如果它需要更复杂并且处理保存多个对象的值而不是序列化是最好的选择。如果您正在寻找人类可读的保存格式,我建议使用XML序列化,否则您可能需要查找一些非人类可读的格式。

相关问题