ゲームモードクラスCGameModeの作成です。
このクラスはゲーム中の場面をまとめたものです。例えばゲーム本編のアクションパートをメインモード、ゲームクリア後のエンディングをエンディングモードといったようにまとめます。他にはゲームオーバーモードとかおまけモードとかね。
それらのモードは基底クラスであるゲームモードクラスを継承させて作ります。こうすればキャラクタクラスの時のように、クラスの種類に依存せず処理できます。
上位クラスであるシステムクラスCSystemにChangeGameMode()という関数を作って、こいつにゲームモードの切り替えをさせます。これで各ゲームモードは独立性が高まり、どこから作っても良くなります。ちなみに前回までキャラクタとかを作っていたのは、実はメインモードCGameModeMainの中だったのです。(語弊あるかな?メインモードからキャラクタ管理クラスが呼び出されているという意味です)
次回は、そろそろやらないとなぁという事で、キャラクタのアニメーションを実装します。
//----------------------------------------------------------------------------- // ゲームモード変更 BOOL CSystem::ChangeGameMode(int mode_no) { // 現在のゲームモードを解放 if (GameMode!=NULL) { GameMode->Term(); delete GameMode; GameMode=NULL; } // ゲームモード変更 switch (mode_no) { case MAIN: GameMode= new CGameModeMain; break; case GAMEOVER: GameMode= new CGameModeGameOver; break; } // ちゃんと変更できた? if (GameMode==NULL) { MessageBox(NULL, "ゲームモードの変更に失敗しました", "CSystem::ChangeGameMode", MB_OK); return E_FAIL; } // 初期化 GameMode->Init(); return S_OK; } //----------------------------------------------------------------------------- // ゲームモードクラス(継承させるだけなので、何も処理しない) class CGameMode { public: virtual void Init()=0; // 初期化 virtual void Term()=0; // 解放 virtual void Move()=0; // 移動 virtual void Draw()=0; // 描画 };