c++ - 在二进制文件中保存和加载游戏状态。 C++

标签 c++ class file-io vector save

我一直在寻找一种简单的方法来保存和加载我的游戏状态,并且尝试了一些方法但无法理解它。这是我保存的东西......

FILE *file2 = fopen("Save.bin", "w");
if ( file2 != 0){
    fwrite((Game*)game, sizeof(Game), 1, file2);
}

和加载

FILE *file = fopen("Save.bin", "r");
if ( file != 0){
    fread(game, sizeof(Game), 1, file);
}

Game 是一个控制整个游戏并包含我需要保存的所有值的类。我认为我遇到的主要问题是 Game 包含 2 个 vector 和一个指向另一个类的指针,但我也确实需要在其中保存值。最好的方法是什么?

最佳答案

我很确定直接 fwrite 你的类至少不会在 60 亿个不同的级别上工作。你需要做的是将你的 X/Y/Z 位置、收集的武器、弹药、当前 map 、触发的事件等数据保存到一个文件中,可能是通过使用连接和 fwrite-ing 构建一个长 INI 样式的字符串那个。

然后当游戏加载时,您从字符串中解析数据并重建您的类。

关于c++ - 在二进制文件中保存和加载游戏状态。 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5697318/

相关文章:

c++ - 将文件读入 C++ 中的字符串 vector 时,std::vector 下标超出范围

c++ - 在 OpenCV CameraCalibration 函数中计算对象点

c++ - 重载 < 运算符的正确方法?

c++ - 使用位移位定义的宏值

c++ - 二叉搜索树分割错误

perl - 在 Perl 中使用词法目录句柄是否更可取?

c++ - 为什么我的按钮类项目共享相同的 lambda 函数?

c# - 以集合作为属性的类与继承集合的类

java - 了解 javap 输出

c# - 在 C# 中创建和保存文件