Сохраните и загрузите состояние игры в двоичный файл и из него.C ++ - PullRequest
1 голос
/ 18 апреля 2011

Я искал простой способ сохранить и загрузить свое игровое состояние и попробовал кое-что, но никак не мог разобраться.вот что я получил за сохранение ...

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 содержит 2 вектора и указатель на другой класс, но мне тоже нужно сохранить значения в них.Каков наилучший способ сделать это?

Ответы [ 2 ]

3 голосов
/ 18 апреля 2011

Вы можете использовать некоторые функции Boost Сериализация.

3 голосов
/ 18 апреля 2011

Я почти уверен, что прямая переписка вашего класса не сработает как минимум на шестидесяти миллионах отдельных уровнях.Что вам нужно сделать, это сохранить данные о вашей позиции X / Y / Z, собранном оружии, боеприпасах, текущей карте, сработавших событиях и т. Д. В файл, возможно, путем построения длинной строки в стиле INI с использованием конкатенации и fwrite-ingчто.

Затем, когда игра загружена, вы анализируете данные обратно из строки и восстанавливаете свой класс.

...