良好的文本增量游戏保存/加载功能(C++)

良好的文本增量游戏保存/加载功能(C++),c++,C++,我正在做一个增量游戏,如果你每1秒赚取红宝石,你可以购买升级等。我正在为它开发一个保存/加载功能,但并不真正知道我在做什么,它还没有走得很远。我在想,我可以保存到一个与游戏相同位置的文件中,并将需要保存的所有内容打印到同一行中,以@符号分隔。这是最简单的部分。结果应该是这样的@12@13@1@2@5,但确实如此@rubies@stone@等等。然后,当您要加载它时,它读取文件,并且每次看到@符号时,它都知道在下一个符号之前,它读取的内容将被分配给该变量,然后在下一个符号时,它知道在下一个符号之前

我正在做一个增量游戏,如果你每1秒赚取红宝石,你可以购买升级等。我正在为它开发一个保存/加载功能,但并不真正知道我在做什么,它还没有走得很远。我在想,我可以保存到一个与游戏相同位置的文件中,并将需要保存的所有内容打印到同一行中,以@符号分隔。这是最简单的部分。结果应该是这样的@12@13@1@2@5,但确实如此@rubies@stone@等等。然后,当您要加载它时,它读取文件,并且每次看到@符号时,它都知道在下一个符号之前,它读取的内容将被分配给该变量,然后在下一个符号时,它知道在下一个符号之前跟随它的内容是下一个变量。现在,我的save函数代码是:

void save() {
cout << "The game is going to save to wherever the game currently is right now to avoid confusion\n";

try {
    ofstream rubyMineSave;
    rubyMineSave.open("RubyFileSave.txt");
    rubyMineSave << rubies << "@" << endl;
    rubyMineSave << rubiesLocation << "@" << endl;
    rubyMineSave << machineLocation << "@" << endl;
    rubyMineSave << stone << "@" << endl;
    rubyMineSave << openMultiple << "@" << endl;
    rubyMineSave << rubyEarnRate << "@" << endl;
    rubyMineSave << stoneEarnRate << "@" << endl;
    rubyMineSave << rubyMachines << "@" << endl;
    rubyMineSave.close();
    cout << "Saved the game\n";
} catch (...) {
    cout << "Unable to save\n";
}
}

对于load函数,我知道我需要打开文件并逐字读取,这样我就可以告诉它保存变量的目的。我目前拥有的加载功能是:

void load() {
string line;
int readLine;

ifstream rubyMineLoad ("RubyFileSave.txt");

if (rubyMineLoad.is_open()) {
    while (getline(rubyMineLoad, line)) {

    }
    rubyMineLoad.close();
} else cout << "Unable to load game, is the save file in the same directory as the game is, and is it called \"RubyFileSave.txt\"\n";   
}


请帮帮我,我不知道怎么做。

搜索序列化当然你的游戏状态会以某种方式存储在内存中。将这些数据结构序列化为一个文件。好的,谢谢,我会研究一下的