SCIさんのおかげで、二回目のプレイ時x=0からできるようになりましたが、
二回目のプレイ時、画面が明るく暗くなり次の画面にいけません。拙い文章
また続けて質問ですみませんが、どなたかよろしくお願いします。
環境 windoes vc2008 DXライブラリです。
#include "DxLib.h" int function_status=0,White,Yellow,G_Blue,Red,c; char KeyBuf[ 256 ] ; int PointX = 0; void Opening(){ SetFontSize( 30 ) ; //サイズを20に変更 SetFontThickness( 1 ) ; //太さを1に変更 ChangeFont( "HGS創英角ポップ体" ) ; //HGS創英角ポップ体に変更 ChangeFontType( DX_FONTTYPE_ANTIALIASING_EDGE );//アンチエイリアス&エッジ付きフォントに変更 DrawString(50,300," PUSH Z KEY",GetColor(255,255,255)); if(KeyBuf[KEY_INPUT_Z]==1) function_status=1; } void Menu(){ LoadGraphScreen( PointX , 350 , "囚人.png" , TRUE ); Yellow = GetColor( 255 , 255 , 0 ) ; // 赤色の値を取得 G_Blue = GetColor( 128 , 128 , 128 ) ; // 緑と青の混合色の値を取得 White = GetColor( 255 , 255 , 255 ) ; // 白色の値を取得 DrawBox ( 400 , 200 , 440 , 700 , G_Blue , TRUE ) ; // 四角形を描画(塗りつぶし) DrawCircle( 550 , 30 , 30 , Yellow , TRUE) ; // 円を描画(塗りつぶし) DrawString( 0, 0, "level 1" , White); //文字列表示 PointX++; if(PointX==290) function_status=2; } void Danjon(){ LoadGraphScreen( PointX , 350 , "囚人.png" , TRUE ); if(c>=0 && c<256) //cが0~256の時 SetDrawBright( c , c , c ); //段々あかるく(c= 0->255) if(c>=256 && c<400) //cが256~400の時 SetDrawBright( 255 , 255 , 255 ); //通常の明るさ if(c>=400 && c<400+256) //cが400~400+256の時 SetDrawBright( 255-(c-400) , 255-(c-400) , 255-(c-400) );//段々暗く(c= 255->0) DrawBox( 0 , 0 , 640 , 480 , White , TRUE) ; //画面全体に白い四角形を描画 c+=3; PointX++; if(PointX==410) function_status=3; } void attack(){ SetFontSize( 30 ) ; //サイズを20に変更 SetFontThickness( 1 ) ; //太さを1に変更 ChangeFont( "HGS創英角ポップ体" ) ; //HGS創英角ポップ体に変更 ChangeFontType( DX_FONTTYPE_ANTIALIASING_EDGE );//アンチエイリアス&エッジ付きフォントに変更 DrawString(50,300," PUSH X KEY",GetColor(255,255,255)); if(KeyBuf[KEY_INPUT_X]==1) function_status=0; PointX=0; } 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; default: DxLib_End() ; // DXライブラリ使用の終了処理 return 0; break; } if( ProcessMessage() == -1 ) break ; //エラーが起きたら終了 ScreenFlip() ; // 裏画面データを表画面へ反映 } DxLib_End() ; // DXライブラリ使用の終了処理 return 0 ; // ソフトの終了 }