dポイントプレゼントキャンペーン実施中!

C++でRPGを作成しようとしています。
キャラクターのステータスを管理をするクラスを作成しようとしているのですが

class Chara {
private:
int HP
int MP
public:
int GetHP();
void SetHP(int HP);
int GetMP();
void SetMP(int MP);
}
のように個々のステータスに対して関数を追加していくのか
構造体などでまとめて、
int GetStatus(Status);
のような関数をつくるか、後々どちらの方が流用できるのでしょうか?

また、各ステータスは
int HP
int HP_MAX
のように別々の変数で管理する必要があると思いますが
param HP
のような構造体も定義した方がいいでしょうか?

RPGのステータス管理の定石のようなものがあれば教えてください。

A 回答 (2件)

私もまとめるのは必要になったときでいいと思います。


言い換えると後者のほうが汎用なんですが、後者はカプセル化を考えるとSetStatus関数が気持ち悪いことになります。
例えばステータスの他にスキルや所持アイテム、好感度、戦績などなどをCharaに保持させたらどうなるか考えてみてください。
この状況でHPだけを変更するのは無駄が多いですし、まとめて渡すにしてもデータ隠蔽のために必要最小限に抑えるべきです。

なので、とりあえず個々で作って、必要に応じてまとめる方法も考慮に入れる、が定石だと思います。
    • good
    • 0

> 後々どちらの方が流用できるのでしょうか?



個別のを作っておく。
全部まとめてほしくなったらそのときに用意すればいい。

> param HP
> のような構造体も定義した方がいいでしょうか?

これも同様。必要となったときに考えればいい。

最初っからカンペキを望んでも無理。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!