c++ - 保存、加载和重玩游戏。 C++

标签 c++ visual-studio-2010

基本上,作为团队的一员,我必须为我的大学类(class)创建一个类似吃 bean 人的游戏,只是僵尸而不是幽灵。 到目前为止,我们已经构建了所有游戏,而且看起来运行得非常好。我们当前的问题是我们必须保存游戏(使用用户名和分数),将游戏加载到保存后的位置,使用正确的用户名和分数,最后能够提供用户可以重玩的选项查看他们之前所做的所有 Action (以及僵尸所做的 Action )。僵尸将始终做出与用户相同的 Action ,因为它们旨在追逐用户。

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

至于我们不确定的 Saving,还有孔(0 符号)和药丸(* 符号)需要考虑。所以角色、僵尸、药丸和洞的位置都需要保存。角色可以从任何随机位置开始,几乎所有其他内容都放在后面。

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

有没有人对我们保存、加载和重放的方式有任何建议?

谢谢

最佳答案

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

通过这种方式,您可以通过将输入发送到游戏引擎来轻松地重玩游戏(这可能需要进行大量重组,具体取决于游戏引擎的设计)。为了加速加载,您还可以在保存时保存游戏状态(通过序列化)。

这就是想法,如何去做...您需要一个不断扩展的数组来记录用户输入,所以让我们使用链表。

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&)。

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

关于c++ - 保存、加载和重玩游戏。 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16156991/

相关文章:

visual-studio-2010 - 自定义Windows服务调用Powershell来执行交换32位和64位问题的命令?

c++ - 使用 floor(c++) 的向下舍入函数

c++ - llvm jit 编译成二进制

c++ - 在不实例化模板的情况下访问模板类的公共(public)静态成员?

C++:如何在循环中添加 pthreads 而不是 "pause"循环?

c# - 如果语句突然被 Visual Studio 2010 在下一行格式化

c++ - Memcpy int 到 char 缓冲区 - 作为 sprintf 的替代

c++ - 为 numeric_limit<T>::max() 指定无限限制?

windows - 关于静态库和 dll

c - 如何在 C 中实现类似 nasm 的结构?