メインループで呼ぶ関数はその時の状況によって様々になるでしょう。

つまりメインループで呼ぶ関数を制御する必要があります。

そこで、func_stateなる変数を用意し、それに状態を示す値を代入し、それを元に条件分岐させてやりましょう。

func_state変数をグローバル変数として用意したいので、まずGV.hに追加します。




--GV.hに以下を追加--

GLOBAL int func_state;



ついでに次の節の準備をする為、初期化関数を用意しておきましょう。



--ini.cppに以下を追加--

void first_ini(){

}




メインループから呼ぶ関数を宣言する時はfunction.hにも書いてやるんでしたね。



--function.hに以下を追加--

GLOBAL void first_ini();



メインループでは用意したfunc_stateを元にしてswitch文で条件分岐してやります。



--main.cpp変更--

#define GLOBAL_INSTANCE 
#include "../include/GV.h"

//ループで必ず行う3大処理
int ProcessLoop(){
        if(ProcessMessage()!=0)return -1;//プロセス処理がエラーなら-1を返す
        if(ClearDrawScreen()!=0)return -1;//画面クリア処理がエラーなら-1を返す
        GetHitKeyStateAll_2();//現在のキー入力処理を行う
        return 0;
}

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){
    ChangeWindowMode(TRUE);//ウィンドウモード
    if(DxLib_Init() == -1 || SetDrawScreen( DX_SCREEN_BACK )!=0) return -1;//初期化と裏画面化

        while(ProcessLoop()==0){//メインループ
                switch(func_state){
                        case 0:
                                load();         //データロード
                                first_ini();//初回の初期化
                                func_state=100;
                                break;
                        case 100:
                                graph_main();//描画メイン
                                break;
                        default:
                                printfDx("不明なfunc_state\n");
                                break;
                }

                if(CheckStateKey(KEY_INPUT_ESCAPE)==1)break;//エスケープが入力されたらブレイク
        ScreenFlip();//裏画面反映
    }

    DxLib_End();//DXライブラリ終了処理
    return 0;
}



4節から実行結果は変わっていません。以前と同じように実行できれば成功です。

- Remical Soft -