タイトル画面から次の画面に進む
誰もが一度はつまずく所だと思います。ここではグローバル変数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;
}
// ゲームの関数
// 戻り値 なし 引数 なし
...