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

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
シャラ

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

#1

投稿記事 by シャラ » 14年前

はじめて質問させていただきます

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

アバター
やっくん
記事: 5
登録日時: 14年前
住所: 長崎県長崎市

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

#2

投稿記事 by やっくん » 14年前

間違えたので消去。
最後に編集したユーザー やっくん on 2011年5月31日(火) 08:54 [ 編集 1 回目 ]

アバター
やっくん
記事: 5
登録日時: 14年前
住所: 長崎県長崎市

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

#3

投稿記事 by やっくん » 14年前

やっくん さんが書きました:環境がわからないので、詳しく書けませんがタイトル画面とゲームメイン画面の切り替えでしたら下のような手法があります。

コード:


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となるような処理とすれば良いでしょう。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

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

#4

投稿記事 by softya(ソフト屋) » 14年前

はじめまして。
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 ;                                               // ソフトの終了
}
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

シャラ

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

#5

投稿記事 by シャラ » 14年前

やっくんさん
副管理人さん
うまく画面の切り替えができるようになりました
詳しい説明をしていただき
ありありがとうございました

閉鎖

“C言語何でも質問掲示板” へ戻る