我试图使用c ++创建一个RPG,现在只是一个文本RPG。我想创建很多类的实例" monster"。让我说我需要制作100个怪物(妖精,食人魔,龙等),我应该如何储存这些?我应该有一个专门用于存储类实例的单独文件吗?如果有,如何?我希望将它们全部放在一个文件中,这样就不会占用其他地方的空间。
答案 0 :(得分:1)
您可以将课程存储在session_decode()
文件中,并使用binary
和write
。
也许这就是你想要做的,这是一个简单的例子。
我们说我们有这个课程:
read
写入的文件:
class Goblin {
public:
int health;
int damage;
};
现在我们可以创建一个fstream file("record.bin", ios::trunc | ios::binary | ios::in | ios::out);
对象:
Goblin
然后我们可以将数据写入二进制文件:
Goblin my_goblin;
my_goblin.health = 100;
my_goblin.damage = 50;
运行之后,二进制文件将包含有关file.write(reinterpret_cast<char*>(&my_goblin.health), sizeof(my_goblin.health));
file.write(reinterpret_cast<char*>(&my_goblin.damage), sizeof(my_goblin.damage));
类的数据。
现在,为了阅读数据,你不希望那里有Goblin
标志:
ios::trunc
我们再次创建一个fstream file("record.bin", ios::binary | ios::in | ios::out);
对象:
Goblin
然后我们可以将数据读入我们的课程:
Goblin goblin;
现在打印以查看它是否有效:
if (!file.read(reinterpret_cast<char*>(&goblin.health), sizeof(goblin.health))) {
// handle error
}
if (!file.read(reinterpret_cast<char*>(&goblin.damage), sizeof(goblin.damage))) {
// handle error
}
输出:
// Output result if all went well
cout << "Goblin health = " << goblin.health << '\n';
cout << "Goblin damage = " << goblin.damage << '\n';
这真的没必要!
制作基于文字的游戏时,您不需要采用上述方法。只需编写您的类并将它们保存在头文件中。单独声明与实施。
例如:Goblin health = 100
Goblin damage = 50
,Goblin.h
,Goblin.cpp
,Dragon.h
等。
答案 1 :(得分:0)
您可以在文件中存储对象的实例,这称为序列化,并且有很多方法可以实现它,我建议在这方面进行更多的研究。
我相信你不必为你的程序做这个,因为可能有足够的空间来存储你的所有怪物,然后是一些。