我正在嘗試使用C++製作RPG,現在只是一個文本RPG。我想創建很多類「怪物」的實例。假設我需要製造100個怪物(地精,食人魔,龍等),我應該如何儲存這些物品?我應該有一個專門用於存儲類實例的單獨文件嗎?如果是這樣,如何?我想將它們全部放在一個文件中,以免在其他位置佔用空間。將類實例存儲在文件中
-6
A
回答
1
您可以將該類存儲在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
,Dragon.cpp
等
0
你可以在文件中存儲對象的實例,這稱爲序列化,並且有很多方法可以完成它,我建議在這個方向進行更多的研究。
我相信你不必爲你的程序做這個,因爲可能有足夠的空間存儲你所有的怪物,然後一些。
+0
好了,謝謝你的建議,我會做系列化一些研究,看看它的全部意義所在。 – Joe
相關問題
- 1. 在Python Tkinter Treeview中存儲類實例
- 2. 在Python中將類的實例存儲在字典中
- 3. 存儲在列表中以存儲單獨實例的Python類實例
- 4. 將自定義類實例存儲在Silverlight中的IsolatedStorage中
- 5. 將對象存儲在單例類中
- 6. 將存儲在ec2實例上的文件備份到s3
- 7. Rails:將變量存儲在沒有模型的類實例中
- 8. C#如何將一個類的實例存儲在列表中
- 9. 單實例文件存儲與JAVA
- 10. 是否可以將AWS EC2「實例存儲」類型實例備份到S3中?
- 11. 類實例在YAML文件
- 12. 在多實例應用中存儲文件
- 13. C++:在分配的內存中存儲類實例
- 14. 將類實例中的數據存儲到request.session
- 15. 在java的另一個類中存儲類的實例
- 16. 在C++類中存儲Objective-C類實例
- 17. Silverlight將類實例保存到獨立存儲器
- 18. 爲什麼要「將實例類存儲在數據庫中作爲實體」?
- 19. 將文件存儲在內存中
- 20. 將所有類實例的列表存儲在類中作爲靜態數組
- 21. 將類的所有實例存儲在類字段中是不是很糟糕?
- 22. 在Spring中存儲bean實例
- 23. 當一個類實例化,存儲該實例由用戶
- 24. EC2 m1.Medium實例類型表明實例存儲爲410GB
- 25. 將AWS實例存儲複製到EBS?
- 26. 創建存在於不同文件中的類的實例(python)
- 27. 將多個文件(附件)存儲在Azure表存儲中
- 28. 存儲在類文件中的變量
- 29. 實例存儲器在EC2實例中丟失
- 30. 在WCF服務實例的實例變量中存儲OperationContext.Current
感謝您的詳細示例,我可能會將它們存儲在頭文件中,儘管您已經提示,謝謝! – Joe