現在「ゲームプログラミングの館」の解説を参考に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)の処理が行われていることが確認できたので、
文字表示だけがうまくいってないようです。
一回目(起動時)にはきちんと表示されているので、余計に分からなくて非常に悩んでおります。
どなたかご指南ください。