//============================================================================= // 終了処理 //============================================================================= void Uninit(void) { // 終了のモードをセット SetMode(MODE_MAX); // フェードの終了処理 UninitFade(); // サウンドの終了処理 UninitSound(); // 入力の終了処理 UninitInput(); // カメラの終了処理 UninitCamera(); // レンダラーの終了処理 UninitRenderer(); } //============================================================================= // 更新処理 //============================================================================= void Update(void) { // 入力の更新処理 UpdateInput(); // カメラ更新 UpdateCamera(); // モードによって処理を分ける switch (g_Mode) { case MODE_TITLE: // タイトル画面の更新 UpdateTitle(); break; case MODE_TUTORIAL: UpdateBG2(); UpdatePlayer2(); UpdateEnemy2(); break; case MODE_GAME: // ゲーム画面の更新 UpdateBG(); UpdatePlayer(); UpdateEnemy(); UpdateBullet(); UpdateScore(); break; case MODE_RESULT: // リザルト画面の更新 UpdateResult(); break; } UpdateFade(); // フェードの更新処理 } //============================================================================= // 描画処理 //============================================================================= void Draw(void) { // バックバッファクリア Clear(); SetCamera(); // 2Dの物を描画する処理 SetViewPort(TYPE_FULL_SCREEN); // Z比較なし SetDepthEnable(FALSE); // ライティングを無効 SetLightEnable(FALSE); // モードによって処理を分ける switch (g_Mode) { case MODE_TITLE: // タイトル画面の描画 DrawTitle(); break; case MODE_TUTORIAL: DrawBG2(); DrawPlayer2(); DrawEnemy2(); break; case MODE_GAME: // ゲーム画面の描画 DrawBG(); DrawBullet(); // 重なる順番を意識してね DrawEnemy(); DrawPlayer(); DrawScore(); break; case MODE_RESULT: // リザルト画面の描画 DrawResult(); break; } DrawFade(); // フェード画面の描画 #ifdef _DEBUG // デバッグ表示 DrawDebugProc(); #endif // バックバッファ、フロントバッファ入れ替え Present(); } long GetMousePosX(void) { return g_MouseX; } long GetMousePosY(void) { return g_MouseY; } #ifdef _DEBUG char* GetDebugStr(void) { return g_DebugStr; } #endif //============================================================================= // モードの設定 //============================================================================= void SetMode(int mode) { // モードを変える前に全部メモリを解放しちゃう StopSound(); // まず曲を止める // モードを変える前に全部メモリを解放しちゃう // タイトル画面の終了処理 UninitTitle(); // BGの終了処理 UninitBG(); // プレイヤーの終了処理 UninitPlayer(); // エネミーの終了処理 UninitEnemy(); // バレットの終了処理 UninitBullet(); // スコアの終了処理 UninitScore(); // リザルトの終了処理 UninitResult(); UninitPlayer2(); UninitEnemy2(); UninitBG2(); g_Mode = mode; // 次のモードをセットしている switch (g_Mode) { case MODE_TITLE: // タイトル画面の初期化 InitTitle(); PlaySound(SOUND_LABEL_BGM_maou); break; case MODE_TUTORIAL: InitBG2(); InitPlayer2(); InitEnemy2(); PlaySound(SOUND_LABEL_BGM_maou); break; case MODE_GAME: // ゲーム画面の初期化 InitBG(); InitPlayer(); InitEnemy(); InitBullet(); InitScore(); // ロードゲームだったらすべての初期化が終わった後にセーブデータを読み込む if (g_LoadGame == TRUE) { LoadData(); g_LoadGame = FALSE; // ロードしたからフラグをClearする } PlaySound(SOUND_LABEL_BGM_sample001); break; case MODE_RESULT: InitResult(); PlaySound(SOUND_LABEL_BGM_sample002); break; case MODE_MAX: break; } } ``````ここに言語を入力 //============================================================================= // 更新処理 //============================================================================= void UpdateTitle(void) { if (GetKeyboardTrigger(DIK_RETURN)) {// Enter押したら、ステージを切り替える SetFade(FADE_OUT, MODE_TUTORIAL); } // ゲームパッドで入力処理 else if (IsButtonTriggered(0, BUTTON_START)) { SetFade(FADE_OUT, MODE_TUTORIAL); } else if (IsButtonTriggered(0, BUTTON_B)) { SetFade(FADE_OUT, MODE_TUTORIAL); } // セーブデータをロードする? if (GetKeyboardTrigger(DIK_L)) { SetLoadGame(TRUE); SetFade(FADE_OUT, MODE_TUTORIAL); } // テストでエフェクトの発生場所を移動させる float speed = 4.0f; if (GetKeyboardPress(DIK_DOWN)) { effect_dy += speed; } else if (GetKeyboardPress(DIK_UP)) { effect_dy -= speed; } if (GetKeyboardPress(DIK_RIGHT)) { effect_dx += speed; } else if (GetKeyboardPress(DIK_LEFT)) { effect_dx -= speed; } #ifdef _DEBUG // デバッグ情報を表示する //PrintDebugProc("Player:↑ → ↓ ← Space\n"); #endif }``` ```ここに言語を入力 コード// エネミー全滅チェック if (g_Enemy2Cnt <= 0) { SetFade(FADE_OUT, MODE_GAME); }
一番上のコードはメインcppの中に書いてあるコードなのですが
ここでチュートリアルモードを宣言していて
次のタイトルのコードの中でタイトル画面でクリックをしたら
次のチュートリアルモードに行くように設定しています
ですが、タイトルの後にチュートリアルモードのいくのではなく
そのまま、ゲームモードに行ってしまいます
一番下のコードはチュートリアルで使用する、敵のコードです
三体のエネミーが全滅したらゲームモードに行くようにしてもチュートリアルが始まらずそのままゲームモード行ってしまいます
解決方法が分かる方はいますか
まずは自分でデバッグしてください.
ご自身で用意したモード遷移の機構が想定通り動いてるのかどうかをチェックすれば良いのでは.
例えば,
> タイトル画面でクリックをした
あたりからの処理を実際に追ってみれば想定と違う動作に出くわすんじゃないですか?
メインの cpp とは何のことでしょう?
コード片だけでは何も分かりません。
そもそも回答をいただいていたたくさんの過去の質問を放置し過ぎです。質問の丸投げ具合と相まって、これでは誰も回答する気にはなれないでしょう。
> ご自身で用意した
って書いたけども,質問のリストを見た感じ,この人,自分でコード書いてるのかなぁ? とか…(←失礼な)
仮にどこかから持ってきたコードを改造しようとしては毎度そんなことになっているのであれば,最初から自前で実装していくことを考えた方が良いのではなかろうか.
わかる人は居るでしょうが、ここはデバッグ依頼や製作依頼をする場ではありません。
このコードに関しては一度も自分でコードを組んだといっていませんでしたが、誤解を生んだのでしたら申し訳ございません。
過去の質問に関しては、私のアカウントが不具合を起こしており「解決」にしようとしてもならない状態にあるので放置という形になっております、申し訳ございません
いま別のアカウントになっており、こっちにアカウントで返信させていただきました
