ページ 11

キャラクターオブジェクトを他のキャラクターオブジェクトにアクセスさせる

Posted: 2013年10月06日(日) 00:06
by takatwu
現在C++でゲームの作成を行っています。

そこでキャラクターが現在存在する自分以外のキャラクター全員にダメージを与える等の行動をさせたいのですが
その方法に躓いています。

現在のソースコードではキャラクタークラスがキャラクターマネージャークラスのポインタを持っており
そのマネージャーから全員分のキャラクターデータにアクセスできるようにしているのですが
この方法に疑問を感じています。(自分に対するマネージャーを自分が持っているのはおかしい?)

1対1の場合であれば相手キャラクターのポインタを自キャラクターに持たせることで何とかなりますが
このような場合はどうすればいいでしょうか?

やはりこういう処理はマネージャー側にさせるべきなのでしょうか?
そうであれば通常の1対1での攻撃等もマネージャー側にさせるべきなのでしょうか?

Re: キャラクターオブジェクトを他のキャラクターオブジェクトにアクセスさせる

Posted: 2013年10月06日(日) 15:03
by beatle
クラス設計は唯一の答えがあるわけではないので答えづらいですが、例えば「戦闘」をクラスにして、戦闘クラスは戦闘に参加しているキャラクタを持つようにしては如何でしょう。
その上で、各攻撃技もクラス化して、ダメージ計算は攻撃技クラスに任せるようにしては?

今攻撃しようとしているプレイヤは、攻撃技クラスをインスタンス化して、それをプレイヤが持つ戦闘クラスのインスタンスに渡します。
戦闘クラスは攻撃技クラスを受け取ったら、攻撃技クラスに戦闘参加メンバ一覧を渡して、ダメージ計算をしてもらいます。

Re: キャラクターオブジェクトを他のキャラクターオブジェクトにアクセスさせる

Posted: 2013年10月06日(日) 15:21
by takatwu
キャラクタークラスがどうするかしか考えていなかったため他のクラスに"してもらう"という方法を思いつきませんでした。

ダメージ計算用のクラスを作成し、そこでどのキャラクターからどのキャラクターへダメージを与える。というように作成しようと思います。
どうもありがとうございました。