ドラクエ風の黒い窓を作る処理で困っています
Posted: 2010年1月15日(金) 01:30
昔のドラクエ風のゲームを作っていて
Xボタンを(Aボタン)
Zボタンを(Bボタン)
のような処理をすると考えて作っています
Xボタンを1度押すと窓1が表示されて
Zボタンを1度押すと窓を閉じて前の処理へ戻るまではできました
しかしXボタンを押して窓1が表示されているときにもう一度Xボタンを押すと窓2が表示されるようにしたいのですが二つの窓が同時に表示されてうまくいきません
Xボタンを(Aボタン)
Zボタンを(Bボタン)
のような処理をすると考えて作っています
Xボタンを1度押すと窓1が表示されて
Zボタンを1度押すと窓を閉じて前の処理へ戻るまではできました
しかしXボタンを押して窓1が表示されているときにもう一度Xボタンを押すと窓2が表示されるようにしたいのですが二つの窓が同時に表示されてうまくいきません
int Make_CmdWindow(int cr__x,int cr__y,int i,int j,char bname[50])//座標、座標、座標、座標、bmp名
{
CmdFlg=1;
//image = LoadGraph( "BMP/1138--.bmp" ) ;
DrawRectGraph( 0, 0, i, j, 640, 640, image, TRUE, FALSE ) ;
int cr1 = LoadGraph( "BMP/cr.bmp" );
DrawRectGraph( 320, 320, 0, 0, 32, 48, cr1, TRUE, FALSE ) ;
DrawGraph( 50 , 50 ,cmdwindow, false ) ;
SetTransColor( 255 , 0 , 255 ) ;
cmdwindow = LoadGraph( "BMP/cmd-win1.bmp") ;//左上にでる話すから調べるなどの窓(窓1)
int SPEAKwindow = LoadGraph( "BMP/cmd-win2.bmp") ;//下にでる会話窓(窓2)
int Cr = GetColor( 255 , 255 , 255 ) ;
DrawString( cmd_x, cmd_y , "⇒" , Cr );
ScreenFlip();
while(ProcessMessage()==0 && GetHitKeyStateAll(Key)==0 && Key[KEY_INPUT_ESCAPE]==0 && CmdFlg==1){
//↑メッセージ処理 ↑画面をクリア ↑入力状態を保存 ↑ESCが押されていない
DrawRectGraph( 0, 0, i, j, 640, 640, image, TRUE, FALSE ) ;
DrawRectGraph( 320, 320, 0, 0, 32, 48, cr1, TRUE, FALSE ) ;
DrawGraph( 0 , 0 ,cmdwindow, true ) ;
int Cr = GetColor( 255 , 255 , 255 ) ;
DrawString( cmd_x, cmd_y , "⇒" , Cr );
ScreenFlip();
if( Key[KEY_INPUT_DOWN]==1 ||( Key[KEY_INPUT_DOWN]%5==0 && Key[KEY_INPUT_DOWN]>30) ){
// たった今押したか、30カウンター以上押しっぱなしかつ5回に一度
if(cmd_y != 130){
DrawGraph( 0 , 0 ,cmdwindow, true ) ;
cmd_y=cmd_y+30;
DrawString( cmd_x, cmd_y , "⇒" , Cr );
}
}
if( Key[KEY_INPUT_UP]==1 ||( Key[KEY_INPUT_DOWN]%5==0 && Key[KEY_INPUT_DOWN]>30) ){
if(cmd_y != 70){
DrawGraph( 0 , 0 ,cmdwindow, true ) ;
cmd_y=cmd_y-30;
DrawString( cmd_x, cmd_y , "⇒" , Cr );
}
}
if(Key[ KEY_INPUT_Z ] == 1){
CmdFlg=0;
}
if((Key[ KEY_INPUT_X ] == 1) && CmdFlg==1){
CmdFlg2=1;
}
while(!ProcessMessage() && !GetHitKeyStateAll( Key ) && !Key[KEY_INPUT_ESCAPE] && CmdFlg2==1){
DrawGraph( 0 , 0 ,SPEAKwindow, true ) ;
if(Key[ KEY_INPUT_Z ] == 1 ){
CmdFlg2=0;
}
ScreenFlip();//裏画面反映
}
ScreenFlip();//裏画面反映
}
return 0;
}
よろしくお願いします