ゲームにおけるデータ構造・クラス設計・パターン2at GAMEDEVゲームにおけるデータ構造・クラス設計・パターン2 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト405:名前は開発中のものです。 08/12/26 08:47:36 Y8oI6MzT 「勝手にメモ」を書き込んでくれる人(達?)の存在は、正直ありがたい 406:名前は開発中のものです。 08/12/28 17:34:36 pzJs6/UU MVCでいうと、 M:StgScene V,C:Menu,Playing ってことなのだろうか? Stateパターンという風にも捉えられる? 407:名前は開発中のものです。 08/12/29 00:45:07 THn3O3Oz Stateパターンだとこんなかんじかね? struct StgScene { void A(); void B(); void C(); }; class State { virtual void Update(StgScene&) = 0; }; class Playing : public State { virtual void Update(StgScene& scene){ scene.A(); scene.B(); scene.C(); } }; class Menu : public State { virtual void Update(StgScene& scene){ scene.C(); } }; 408:名前は開発中のものです。 09/01/07 23:21:00 rBsXmGd8 なんか話題無いなー的なので、>>404の続きでも。今回もセガのあれを参考にしました。 自分もまだ試作中だけど、かなり自由かつ堅実に作れる。 StgSceneクラスの考えをもう少し推し進めると、全てのシーンの汎化クラスであるSceneクラスが作れそう。 # child // フィールド。子シーンの保持。 # childTypes // フィールド。runやUpdateの戻り値が自分の子かどうか識別するためのもの。 # run(Scene parent) // メソッド。child == null のとき、自分が実行すべきシーンと認識してrunする。戻り値に次の遷移先シーンかnull返す。 # focusing // イベント。シーン遷移で自分が次にrunする場合の初期化処理。Update内のシーン遷移処理に際し呼ばれることが目的なので、abstractメソッドでもいいです。 # unfocusing // イベント。シーン遷移で別のシーンに移動する際の後始末。上と同様。戻り値に次の遷移先シーンかnull返す。 +Update(Scene parent) // childがいればchildのUpdateを呼び出し、そうでなければrunする。その後、遷移先シーン(つまりUpdateやrunの戻り値)に応じた遷移処理を行う。 Updateの実装内容について 1、シーンは線形リストを形成し、末端シーンのrunを実行するように記述する。(rootScene → StgGame → StgPlayingや、rootScene → TitleScene → TitleHighScoreといったリスト構造になる。) 2、runのreturnに意味を決める。そしてそれによって処理が分岐するように記述する。null、自分、兄弟シーン、親以上。 ・nullは、runしたシーンに子が出来て、自分がフォーカスシーンで無いことを表す。 ・原則として、自分の子供と祖先の子供以外には直接遷移できないとする。する必要も考えられないので。 ・・・っとここまで書いて、ソースコードがないとどう考えても伝わらんだろと思った。 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch