良好的文本增量游戏保存/加载功能(C++)
我正在做一个增量游戏,如果你每1秒赚取红宝石,你可以购买升级等。我正在为它开发一个保存/加载功能,但并不真正知道我在做什么,它还没有走得很远。我在想,我可以保存到一个与游戏相同位置的文件中,并将需要保存的所有内容打印到同一行中,以@符号分隔。这是最简单的部分。结果应该是这样的@12@13@1@2@5,但确实如此@rubies@stone@等等。然后,当您要加载它时,它读取文件,并且每次看到@符号时,它都知道在下一个符号之前,它读取的内容将被分配给该变量,然后在下一个符号时,它知道在下一个符号之前跟随它的内容是下一个变量。现在,我的save函数代码是:良好的文本增量游戏保存/加载功能(C++),c++,C++,我正在做一个增量游戏,如果你每1秒赚取红宝石,你可以购买升级等。我正在为它开发一个保存/加载功能,但并不真正知道我在做什么,它还没有走得很远。我在想,我可以保存到一个与游戏相同位置的文件中,并将需要保存的所有内容打印到同一行中,以@符号分隔。这是最简单的部分。结果应该是这样的@12@13@1@2@5,但确实如此@rubies@stone@等等。然后,当您要加载它时,它读取文件,并且每次看到@符号时,它都知道在下一个符号之前,它读取的内容将被分配给该变量,然后在下一个符号时,它知道在下一个符号之前
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";
}
请帮帮我,我不知道怎么做。搜索序列化当然你的游戏状态会以某种方式存储在内存中。将这些数据结构序列化为一个文件。好的,谢谢,我会研究一下的