【初心者】スレを立てる前にココで質問を【Part17】at GAMEDEV【初心者】スレを立てる前にココで質問を【Part17】 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト320:名前は開発中のものです。 08/06/23 01:32:04 uo+1ccfk 適当に書いてみた int SceneManager::receiveMessage(Message* pMsg, int param1, int param2, int param3, int param4) { switch (pMsg->getType()) { case MSG_CHANGESCENE: assert(SCENE_ID_MIN <= param1 && param1 <= SCENE_ID_MAX); m_pNextScene = m_allScenes[param1]; break; } return SUCCESS; } int SceneManager::execScene() { if (m_pNextScene != NULL) { Scene* current = m_pCurrentScene; Scene* next = m_pNextScene; current->onExit(); next->onEnter(); m_pCurrentScene = next; m_pNextScene = NULL; } return m_pCurrentScene->execute(this); } 321:名前は開発中のものです。 08/06/23 09:12:21 cIfICiuE // あのね、僕の場合はね、シーンを総括するシナリオクラス作ったの。 // STLのlist(線形リスト)でSceneを管理するんだよ。 // (案外、スタックでもいいような気がするなー) // (*1)Scenario::start()でシナリオが開始されて、 // (*2)登録されたScene::start()を呼び出すの。 // あ、Scene::start()っていうのは、そのシーンを開始するメソッドね。 // それでね、Sceneの中で次のシーンが決まったら、 // (*3)Scenario::addScene()で、次のシーンを登録して、 // 今実行中のシーンはただちに終わればいいの。 // (*4)登録されたシーンが全部無くなったらゲーム終了ね。 // ところで、これだけの長文読むより、プログラムを読む方が簡単に思えてくるだろ list<Scene*> Scenario::scenelist; void Scenario::start() // (*1) { while ( scenelist.size() > 0 ) { // (*4) Scene* s = scenelist.front(); (*s)->start(this); // (*2) scenelist.pop_front(); } } void Scenario::addScene(Scene* scene) // (*3) { scenelist.push_back(scene); } 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch