はじめて質問させていただきます
タイトル画面でスタートと終了を選べるようにして
スタートを押すとゲームメインに画面が切り替わるようにしたいのですが
うまくできません
またゲームオーバーになるとタイトル画面に戻るようにしたいと考えています
どのようにプログラムを打てばよいでしょうか
よろしくお願いします
タイトル画面からゲームメインへの切り替えについて
Re: タイトル画面からゲームメインへの切り替えについて
やっくん さんが書きました:環境がわからないので、詳しく書けませんがタイトル画面とゲームメイン画面の切り替えでしたら下のような手法があります。C、C++などでしたらmain関数内に上記のように無限ループ内にswitch文を置きます。int phase = 0; while(1){ switch(phase) { case 0 : phase = Title(); break; // タイトル画面処理 case 1 : phase = Game(); break; // ゲーム画面処理 default : End(); // 終了処理 } }
ここでwhile文による無限ループはゲームが常に動き続けていることを示しています。
始めは phase が 0 なので、 Title関数が実行されます。
ここにシャラさんがタイトル画面の処理をしているものを入れてください。
そこでもし、
・ゲームメインに進むように選択されたならばphase = 1と代入
・終了するならばphase = 2(以上)を代入
とすればタイトル画面からの遷移ができると思います。
またゲームメインからの遷移もゲームオーバーの際にphase=0となるような処理とすれば良いでしょう。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
- 住所: 東海地方
- 連絡を取る:
Re: タイトル画面からゲームメインへの切り替えについて
はじめまして。
DXライブラリなら、
「34. メイン関数の書き方。」
http://dixq.net/g/37.html
をベースにしてこんなかんじでしょうか。
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: タイトル画面からゲームメインへの切り替えについて
やっくんさん
副管理人さん
うまく画面の切り替えができるようになりました
詳しい説明をしていただき
ありありがとうございました
副管理人さん
うまく画面の切り替えができるようになりました
詳しい説明をしていただき
ありありがとうございました