ページ 11

タイトル画面からゲームメインへの切り替えについて

Posted: 2011年5月31日(火) 00:49
by シャラ
はじめて質問させていただきます

タイトル画面でスタートと終了を選べるようにして
スタートを押すとゲームメインに画面が切り替わるようにしたいのですが
うまくできません
またゲームオーバーになるとタイトル画面に戻るようにしたいと考えています
どのようにプログラムを打てばよいでしょうか
よろしくお願いします

Re: タイトル画面からゲームメインへの切り替えについて

Posted: 2011年5月31日(火) 08:51
by やっくん
間違えたので消去。

Re: タイトル画面からゲームメインへの切り替えについて

Posted: 2011年5月31日(火) 08:52
by やっくん
やっくん さんが書きました:環境がわからないので、詳しく書けませんがタイトル画面とゲームメイン画面の切り替えでしたら下のような手法があります。

コード:


int phase = 0;

while(1){
  switch(phase)
  {
      case 0  : phase = Title(); break;  // タイトル画面処理
      case 1  : phase = Game(); break; // ゲーム画面処理
      default : End(); // 終了処理
  }
}
C、C++などでしたらmain関数内に上記のように無限ループ内にswitch文を置きます。
ここでwhile文による無限ループはゲームが常に動き続けていることを示しています。
始めは phase が 0 なので、 Title関数が実行されます。
ここにシャラさんがタイトル画面の処理をしているものを入れてください。
そこでもし、
・ゲームメインに進むように選択されたならばphase = 1と代入
・終了するならばphase = 2(以上)を代入
とすればタイトル画面からの遷移ができると思います。
またゲームメインからの遷移もゲームオーバーの際にphase=0となるような処理とすれば良いでしょう。

Re: タイトル画面からゲームメインへの切り替えについて

Posted: 2011年5月31日(火) 11:55
by softya(ソフト屋)
はじめまして。
DXライブラリなら、
「34. メイン関数の書き方。」
http://dixq.net/g/37.html
をベースにしてこんなかんじでしょうか。

コード:

#include "DxLib.h"

//	ゲーム状態
enum {
	STATE_TITLE,	//タイトル
	STATE_MAIN,		//メイン
	STATE_ENDING,	//エンディング
	STATE_END,		//終了
};

int function_status=STATE_TITLE,White;
char KeyBuf[ 256 ] ;


int title(){
	DrawString(100,100,"タイトル画面 (スタートはZをプッシュ、終了ならEをプッシュ)",White);
	if(KeyBuf[KEY_INPUT_Z]==1)
		return STATE_MAIN;
	if(KeyBuf[KEY_INPUT_E]==1)
		return STATE_END;
	return STATE_TITLE;
}

int gameMain(){
	DrawString(100,140,"ゲームメイン (ゲームオーバーはXをプッシュ、エンディングならQをプッシュ)",White);
	if(KeyBuf[KEY_INPUT_X]==1)
		return STATE_TITLE;
	if(KeyBuf[KEY_INPUT_Q]==1)
		return STATE_ENDING;
	return STATE_MAIN;
}

int ending(){
	DrawString(100,260,"エンディング画面 (タイトルに戻るにはTをプッシュ)",White);
	if(KeyBuf[KEY_INPUT_T]==1)
		return STATE_TITLE;
	return STATE_ENDING;
}


int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
	ChangeWindowMode( TRUE ) ;                                   //ウィンドウモードに変更
	if( DxLib_Init() == -1 ) return -1;                      // DXライブラリ初期化処理 エラーが起きたら終了 

	White = GetColor( 255 , 255 , 255 ) ;                    //色の取得

	SetDrawScreen( DX_SCREEN_BACK ) ;                                // 描画先を裏画面に設定

	while( 1 ){
		ClearDrawScreen();                                                               // 裏画面のデータを全て削除
		GetHitKeyStateAll( KeyBuf ) ;                                    // すべてのキーの状態を得る

		switch(function_status){
		case STATE_TITLE:
			function_status = title();
			break;
		case STATE_MAIN:
			function_status = gameMain();
			break;
		case STATE_ENDING:
			function_status = ending();
			break;
		default:
			DxLib_End() ;                                // DXライブラリ使用の終了処理
			return 0;
			break;
		}

		if( ProcessMessage() == -1 ) break ;                 //エラーが起きたら終了

		ScreenFlip() ;                                   // 裏画面データを表画面へ反映
	}

	DxLib_End() ;                                            // DXライブラリ使用の終了処理
	return 0 ;                                               // ソフトの終了
}

Re: タイトル画面からゲームメインへの切り替えについて

Posted: 2011年5月31日(火) 20:43
by シャラ
やっくんさん
副管理人さん
うまく画面の切り替えができるようになりました
詳しい説明をしていただき
ありありがとうございました