NATTO さんが書きました:解説書についていたcppファイルの一部分です。
その本だけでなく、このサイトの「ゲームプログラミングの館」もぜひお読みくださいね。
http://dixq.net/g/
NATTO さんが書きました:
ZXCAの4つのキーのどれかが1つ押されるまで待って、
Zなら1、Xなら2、Cなら3、Aなら4をg_janruにいれたいです。
while文でないと、次の処理にいくのではないのですか?
DXライブラリでは、キーを更新するため、画面を更新するため、何よりOSの仕様によりwhileで長時間留まることは許されませんので必ずメインループに戻ってください。
こういうアドベンチャーやクイズなど選択するゲームでは、状態フラグ・スイッチを使います。まぁ変数なんですけどね。
g_janruがスイッチに使えるので、g_janruが0以外になったら次の処理を呼び出すようにすべきでしょう。
それでwhile文も不要です。
つまり、こうなります。
コード:
void MyMain(){
if( g_janru == 0 ) {
DrawBox( 0,0,640,480,GetColor(255,255,255),TRUE);
//DrawGraph(0,0, medaka1, FALSE);
SetFontSize(32);
ChangeFont("MS Pゴシック");
DrawFormatString(70,170,GetColor(255,0,0),"(Z)物語系 全1問");
DrawFormatString(70,210,GetColor(255,255,0),"(X)人物系 全1問");
DrawFormatString(70,250,GetColor(0,255,0),"(C)スキル系 全1問");
DrawFormatString(70,290,GetColor(0,0,255),"(A)物語(難問)系 全1問");
SetFontSize(40);
DrawFormatString(70,370,GetColor(0,0,0),"ジャンルを選ぶがよい!");
SetFontSize(48);
DrawFormatString(100,50,GetColor(0,0,0),"めだかボックス問題集");
DrawFormatString(100,100,GetColor(0,0,0),"~Quiz Of Medaka~");
SetFontSize(24);
if( CheckHitKey( KEY_INPUT_Z ) == 1 ) g_janru = 1;
if( CheckHitKey( KEY_INPUT_X ) == 1 ) g_janru = 2;
if( CheckHitKey( KEY_INPUT_C ) == 1 ) g_janru = 3;
if( CheckHitKey( KEY_INPUT_A ) == 1 ) g_janru = 4;
} else {
・
・
・
}
いくつも問題あるなら問題番号変数でswitch分けしないとマズイですけどね。