264 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 23:07:11 ] C++でのゲームの組み方について質問よいでしょうか 現在シューティングゲームを作ってるのですが、以下のようなタスクシステムで行なっています class ITask { virtual void task()=0; virtual void draw()=0; }; class CEnemyZakoA : public ITask class CEnemyZakoB : public ITask class CEnemyFactory : public ITask class CBg : public ITask class CItem : public ITask こんな感じで、全てのオブジェクトはITaskを継承し、一つのITaskリストに登録しています。 そこで疑問なのですが、Task同士が連携するにはどうすればよいでしょうか? 例えば「CBgの持つ『どのくらいスクロールしたか』の情報によって、CEnemyFactoryは生み出すZakoの種類を変える」 といった場合です。 一応素人考えながらこういう手を考えましたが、一般的にはどうするべきなのでしょうか? 1・FacotryのようなほかのTaskの情報に依存するものは、リストに登録せず特別扱いする(CEnemyFactryとして保持しておく)べき 2・他のTaskに依存するTaskは、その生成時にそのTaskへのポインタをもらっておくべき 3・他のTaskに影響を与える情報をまとめた構造体を持ち、それへのポインタをtask()の引数で渡してあげるべき 1はいまいちだと思います。特別が増えるたびに管理が増えますし、何のためのITaskリストなのかわかりません 2はなかなかいい手ですが、CBgが削除された時などに困ります(share_ptrを使うべき?) 3は構造体に新しい情報が加わるたびに、全てのCXXX.cppが再コンパイルになるのが不満です