TNP資料室 @ ウィキ

タイトル画面から次の画面に進む

最終更新:

kokeiro

- view
だれでも歓迎! 編集

タイトル画面から次の画面に進む

 誰もが一度はつまずく所だと思います。ここではグローバル変数GameStateの値に対応する関数を呼び出すという方法で画面を切り替えます。GameStateが0だったらTitle関数を呼び出し、1だったらGame関数を呼び出すのです。分岐にはswitchを使用します。
 上の構造を持たせる前に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の値を変えるという処理を書き足しています。

...
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;
}

// ゲームの関数
// 戻り値 なし  引数 なし
 ...

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

目安箱バナー