ゲームプログラミングの館に 34.main関数の書き方。 という項目がありますが、
この章の書き方だと
0の時は、オープニングに関する関数へ、
1の時は、メニュー画面に関する関数へ、
2の時は、キャラがダンジョンにいるときに処理する関数へ、
3の時は、戦闘シーンを処理する関数へ、
4の時は、エンディングを処理する関数へ、
というのは 0から順番にキーを押すしかないですよね?
0から3 や 1から4 など 0,1,2,3,4のどれを始めに押しても対応できる
ようには どうすれば良いのでしょうか?
以下がそのソースです
#include "DxLib.h"
int function_status=0,White;
char KeyBuf[ 256 ] ;
void Opening(){
DrawString(100,100,"オープニング画面 (zをプッシュ)",White);
if(KeyBuf[KEY_INPUT_Z]==1)
function_status=1;
}
void Menu(){
DrawString(100,140,"メニュー画面 (xをプッシュ)",White);
if(KeyBuf[KEY_INPUT_X]==1)
function_status=2;
}
void Danjon(){
DrawString(100,180,"ダンジョン画面 (cをプッシュ)",White);
if(KeyBuf[KEY_INPUT_C]==1)
function_status=3;
}
void attack(){
DrawString(100,220,"戦闘画面 (vをプッシュ)",White);
if(KeyBuf[KEY_INPUT_V]==1)
function_status=4;
}
void Ending(){
DrawString(100,260,"エンディング画面 (bをプッシュ)",White);
if(KeyBuf[KEY_INPUT_B]==1)
function_status=5;
}
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 0:
Opening();
break;
case 1:
Menu();
break;
case 2:
Danjon();
break;
case 3:
attack();
break;
case 4:
Ending();
break;
default:
DxLib_End() ; // DXライブラリ使用の終了処理
return 0;
break;
}
if( ProcessMessage() == -1 ) break ; //エラーが起きたら終了
ScreenFlip() ; // 裏画面データを表画面へ反映
}
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
main関数の書き方について
Re:main関数の書き方について
訂正
質問文に
0から3 や 1から4 など 0,1,2,3,4のどれを始めに押しても対応できる
ようには どうすれば良いのでしょうか?
と 書いてありましたが、 1から3 や 1から4 など 0,1,2,3,4のどれを始めに押しても対応できるようには どうすれば良いのでしょうか?
でした ごめんなさい
質問文に
0から3 や 1から4 など 0,1,2,3,4のどれを始めに押しても対応できる
ようには どうすれば良いのでしょうか?
と 書いてありましたが、 1から3 や 1から4 など 0,1,2,3,4のどれを始めに押しても対応できるようには どうすれば良いのでしょうか?
でした ごめんなさい
Re:main関数の書き方について
では、以下の問題を考えてみてください。
(1) 処理を変更するために何を変更しているでしょうか?
(2) 34章のプログラムにおいて、以下の関数はいつ実行され、どのような処理をするか説明できますか?
void Menu(){
DrawString(100,140,"メニュー画面 (xをプッシュ)",White);
if(KeyBuf[KEY_INPUT_X]==1)
function_status=2;
}
(3) (2)の関数をどのように変更したら
Xキーを押したときダンジョン画面にし、
Cキーを押したとき戦闘画面にすることができるようになるでしょうか?
(1) 処理を変更するために何を変更しているでしょうか?
(2) 34章のプログラムにおいて、以下の関数はいつ実行され、どのような処理をするか説明できますか?
void Menu(){
DrawString(100,140,"メニュー画面 (xをプッシュ)",White);
if(KeyBuf[KEY_INPUT_X]==1)
function_status=2;
}
(3) (2)の関数をどのように変更したら
Xキーを押したときダンジョン画面にし、
Cキーを押したとき戦闘画面にすることができるようになるでしょうか?