我正在制作增量游戏,你每1秒钟就能获得红宝石,你可以购买升级等等。我正在为它做一个保存/加载功能,但不知道我在做什么,它还没有走得太远。我想我可以保存到与游戏位于同一位置的文件,然后打印到需要保存在同一行上的所有内容,由" @"标志(这是容易的部分)。它最终应该看起来像@12@13@1@2@5@
,但那确实是@rubies@stone@etc.@
。然后当你想要加载它时,它会读取文件并且每次看到" @"签名它知道,直到下一个符号,它所读取的内容将被分配给该变量,然后在下一个符号,它知道它后面的内容,直到下一个符号是下一个变量。现在我保存函数的代码是:
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";
}
}
对于加载函数,我知道我需要打开文件并逐个字符地读取它,这样我就可以告诉它将变量保存到哪里。我目前的加载功能是:
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";
}
请帮助我,我不知道该怎么做。