タイトル画面から次の画面に進む
誰もが一度はつまずく所だと思います。ここではグローバル変数GameStateの値に対応する関数を呼び出すという方法で画面を切り替えます。GameStateが0だったらTitle関数を呼び出し、1だったらGame関数を呼び出すのです。分岐にはswitchを使用します。
上の構造を持たせる前にGame関数をつくり、Title関数の代わりに呼び出して動作を確認しましょう。
上の構造を持たせる前にGame関数をつくり、Title関数の代わりに呼び出して動作を確認しましょう。
main.cpp
... int white; // 白のカラーコードを格納する void Title(); // タイトルの関数 void Game(); // ゲームの関数 int WINAPI WinMain( HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){ ... while( ProcessMessage()==0 && GetKeyInput(Key)==0 && Key[KEY_INPUT_ESCAPE]==0 && ClearDrawScreen() == 0){ // Title(); // タイトルの関数 Game(); // ゲームの関数 ScreenFlip(); } InitGraph(); InitSoundMem(); DxLib_End(); return 0 ; } // キーの押下時間を調べる関数 // 戻り値 常に0 引数 キーの押下時間を格納する配列の先頭ポインタ ... // タイトルの関数 ... // ゲームの関数 // 戻り値 なし 引数 なし void Game(){ DrawString(100,200,"ゲーム画面です",white); }
正常に文字が表示されましたね。では画面を切り替える構造を作ります。
グローバル変数GameStateをつくり、その値で呼び出す関数を変えています。GameStateの値が0ならTitle関数、1ならGame関数を呼び出します。GameStateはメインループに入る前に0でなくてはなりません。メインループに入ったとき1だったらいきなりゲームが開始してしまいます。また、デバッグ用としてGameStateの値を表示する関数を書き足してます。また、Title関数にはZキーが押されたらGameStateの値を変えるという処理を書き足しています。
グローバル変数GameStateをつくり、その値で呼び出す関数を変えています。GameStateの値が0ならTitle関数、1ならGame関数を呼び出します。GameStateはメインループに入る前に0でなくてはなりません。メインループに入ったとき1だったらいきなりゲームが開始してしまいます。また、デバッグ用としてGameStateの値を表示する関数を書き足してます。また、Title関数にはZキーが押されたらGameStateの値を変えるという処理を書き足しています。
... int white; // 白のカラーコードを格納する void Title(); // タイトルの関数 void Game(); // ゲームの関数 int GameState; // ゲームの状態を格納する変数 int WINAPI WinMain( HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){ ... white = GetColor(255,255,255); GameState = 0; // 最初はTitle関数を呼び出す while( ProcessMessage()==0 && GetKeyInput(Key)==0 && Key[KEY_INPUT_ESCAPE]==0 && ClearDrawScreen() == 0){ switch( GameState ){ case 0: Title(); // タイトルの関数 break; case 1: Game(); // ゲームの関数 break; } DrawFormatString(10,10,white,"GameState:%d",GameState); // GameStateの値を表示する ScreenFlip(); } InitGraph(); InitSoundMem(); DxLib_End(); return 0 ; } // キーの押下時間を調べる関数 ... // タイトルの関数 // 戻り値 なし 引数 なし void Title(){ DrawString(100,100,"タイトル画面です",white); DrawString(100,120,"Zでゲームをはじめる",white); if( Key[KEY_INPUT_Z] == 1 ) // Zキーが押されたらゲームを始める GameState = 1; } // ゲームの関数 // 戻り値 なし 引数 なし ...