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

时间:2015-02-24 17:31:34

标签: c++

我正在制作增量游戏,你每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";   

}

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

0 个答案:

没有答案
相关问题