2013-04-22 96 views
0

基本上,作为一个团队的一员,我必须为我的大学课程创建一个类似pacman的游戏,只是僵尸而不是鬼。 迄今为止我们已经构建了所有的游戏,并且它看起来非常好。我们目前的问题是,我们必须保存一个游戏(使用用户名和分数),使用正确的用户名和分数将游戏加载到它保存的位置,最后能够提供重放选项,用户可以看到他们之前所做的所有动作(以及僵尸所做的动作)。僵尸将始终做出与用户追求用户相同的动作。保存,加载和重放游戏。 C++

我的问题是什么是做保存,加载和重新加载选项的最佳方式?我们不能使用矢量,堆栈或队列。我们只能真正使用字符串,数组和其他基本变量。
我们正在考虑首先将所有内容添加到字符串末尾,然后从字符串中弹出最后一个值。然后,我们可以延迟每一秒,用户将能够看到他/她的动作。

至于储蓄我们不确定,还有漏洞(0符号)和药丸(*符号)要考虑。所以角色,僵尸,药丸和洞的位置将需要保存。角色可以从任意位置开始,几乎所有其他位置都放在后面。

我们进行加载的方式取决于您建议我们进行保存的方式。

有没有人有任何建议我们应该如何保存,加载和重放?

谢谢

+0

为什么你不能使用像矢量等集合...? – cppguy 2013-04-22 21:26:48

+0

@cppguy只是讲师把任务放在了额外的界限上。让我们考虑像数组,文件,字符串等更基本的东西。 – Swapnull 2013-04-22 21:32:31

+0

您应该考虑使用XML。有些库可以帮助管理它。 – 2013-04-22 21:35:44

回答

0

你需要阅读一些序列化。我在这里写了一些文章,但是这对你们来说太过分了:http://www.randygaul.net/2013/01/05/c-reflection-part-5-automated-serialization/

你可以使用一些非常简单的序列化来写出每个僵尸到文件中的移动。然后当你想重新加载这些信息时,你可以反序列化文件中的信息。每一个动作都可能以某种形式存储在链表中,所以你必须想出一种在反序列化时重新创建这种列表的方法。

您的问题非常广泛,所以我的答案也必须相当宽泛。真的,这取决于你研究一个解决方案并实施它。

1

我能想到的最简单的方法是保存用户输入。

这样,您可以通过向游戏引擎发送输入(这可能需要根据游戏引擎的设计进行大量重构)来轻松地重放游戏。为了加速载入,您还可以在保存时(通过序列化)保存游戏状态。

这就是想法,怎么做......你需要一个不断扩大的数组来记录用户输入,所以我们使用一个链表。

struct Node { 
    T data; 
    Node* next_node; 
}; 
//Google for the rest of the code, it is a reeeaaallly 
// basic/fundamental data structure. 

数据将是用户输入和它们发生的时间。 要保存数据,您只需遍历链表并将其附加到std :: ostream &(为通用,std :: ofstream &具体)。

您可以在用户输入之前或之后(或者甚至在另一个文件中,这对高分确实有意义)添加一些其他有用的信息(例如游戏状态和高分)。