



![]()
メインループで呼ぶ関数はその時の状況によって様々になるでしょう。
つまりメインループで呼ぶ関数を制御する必要があります。
そこで、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 -