現在「ゲームプログラミングの館」の解説を参考にRPGを作ろうとしているのですが、
行き詰ってしまったので質問させていただきます。
ちなみにC言語は今回がはじめてです。
--------------------------------------------------------------------------------------------
#include "DxLib.h" int GetHitKeyStateAll_2(int KeyStateBuf[/url]){ char GetHitKeyStateAll_Key[256]; GetHitKeyStateAll( GetHitKeyStateAll_Key ); for(int i=0;i<256;i++){ if(GetHitKeyStateAll_Key==1) KeyStateBuf++; else KeyStateBuf=0; } return 0; } int title(){ int Key[256]; int com=1; int color1,color2,color3,white,blue; white=GetColor( 255 , 255 , 255 ); blue=GetColor( 0 , 255 , 255 ); while(!ProcessMessage() && GetHitKeyStateAll_2(Key)==0 && Key[ KEY_INPUT_RETURN ]!=1 ){ //↑メッセージ処理 ↑キーボード入力状態保存 color1=white; color2=white; color3=white; if(Key[ KEY_INPUT_DOWN ] == 1) com++; else if(Key[ KEY_INPUT_UP ] == 1) com--; if(com==0){ com=3; }else if(com==4){ com=1; }else if(com==1){ color1 = blue ; }else if(com==2){ color2 = blue ; }else{ color3 = blue; } DrawString(280,250, "始めから" ,color1);//文字列表示 DrawString(280,300, "続きから" ,color2);//文字列表示 DrawString(280,350, "EXIT" ,color3);//文字列表示 } return com; } void map(int mapn){ (省略) } int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){ int f_status=0; if( ChangeWindowMode(TRUE) != DX_CHANGESCREEN_OK || DxLib_Init() == -1 ) return -1; //ウィンドウ化と初期化処理 while(1){ if(f_status ==0 ){ f_status = title(); }else if( f_status ==1 ){ map(0); f_status=0; }else if ( f_status ==2 ){ map(1); f_status=0; }else{ return 0; } } DxLib_End(); return 0; }
---------------------------------------------------------------------------------------------
関数の説明をすると、
titleはタイトル画面で、十字キーの上下でメニュー選択、エンターキーで決定します。
「始めから」を選んだなら1、「続きから」なら2、「EXIT」なら3を返します。
mapは引数mapnに応じたマップを表示、それと主人公の移動もこの関数で行ってます。
この関数はエスケープキーで終了するようにしました。
メイン関数では f_statusの値で条件分けしてます。
問題なのですが、「始めから」もしくは「続きから」を選び、エスケープキーを押してもタイトル画面の文字が表示されません。(画面にはマップが表示されたまま)
エスケープを押したあとに、
エンターを押すとmap(0)、↓を一回押した後エンターでmap(1)の処理が行われていることが確認できたので、
文字表示だけがうまくいってないようです。
一回目(起動時)にはきちんと表示されているので、余計に分からなくて非常に悩んでおります。
どなたかご指南ください。