C言語の構造化プログラミングでは簡単なゲーム物を作った事があり、ハイスコアやちょっとしたデータ量のセーブならできました。
今はC++でオブジェクト指向の勉強中ですが、まだ本や解説サイトを読んでなんとなくわかったかも……?程度です。
例としてですが、複数の国家が予算の範囲内で勇者を雇い
勇者はHPが尽きるまで、アイテムを装備して攻撃力と防御力を上げて敵国と戦う。
というゲームを作るとします。
#include <vector>
class cItem
{
private:
int m_atk;
int m_def;
};
class cCharacter
{
private:
int m_Hp;
std::vector<cItem*> m_pItem;
};
class cCountry
{
private:
int m_Gold;
std::vector<cCharacter*> m_pCharacter;
};
これをセーブやロードしようと思ったらどうすればいいんでしょうか?
IDを割り振ってとするのも考えましたが、cCharacterクラスにアクセスするにはポインタが必要です。
実体を持つ事にすると、2つの国が同じ勇者を雇う等の表現が難しくなります。
一応、IDとポインタの組み合わせでセーブとロードができるようなのは組んだのですが、
とんでもなく長くごちゃごちゃしていてバグが無い自信が全くありません。
アプローチとして正しいのかもわかりません。
ゲームを完成させるだけでなくオブジェクト指向の勉強も兼ねているので、
オブジェクト指向的なやり方で、スマートな方法があったら教えてください。
よろしくお願いします。