#include "DxLib.h" int Step ; int Counter ; int Bright = 255 ; int FadeState ; // フェードの処理を1フレーム分行う void Fade_OneFrameProcess( void ) { // フェードさせるフラグが立っていたら Bright の値を 0 に近づける if( FadeState == 1 ) { if( Bright > 0 ) Bright -= 1 ; } else // フェードさせるフラグが倒れていたら Bright の値を 255 に近づける { if( Bright < 255 ) Bright += 1 ; } } // メインの処理を1フレーム分行う void Main_OneFrameProcess( void ) { // 状態遷移処理 switch( Step ) { case 0: // フェードアウト予告 DrawString( 0, 0, "6秒後にフェードアウトして、フェードアウト完了の2秒後にフェードインします", GetColor( 255,255,255 ) ) ; DrawString( 0, 16, "( 1秒 = 60フレーム換算 )", GetColor( 255,255,255 ) ) ; // 6秒経過するまで待つ Counter++ ; if( Counter >= 60 * 6 ) { Step = 1 ; // フェードアウトフラグを立てる FadeState = 1 ; } break ; case 1: // フェードアウト DrawString( 0, 0, "フェードアウト", GetColor( 255,255,255 ) ) ; // フェードアウトし切るまで待つ if( Bright == 0 ) { Step = 2 ; Counter = 0 ; } break ; case 2: // フェードイン開始まで2秒待つ Counter++ ; if( Counter >= 60 * 2 ) { Step = 3 ; // フェードアウトフラグを倒す FadeState = 0 ; } break ; case 3: // フェードイン DrawString( 0, 0, "フェードイン", GetColor( 255,255,255 ) ) ; // フェードインし切るまで待つ if( Bright == 255 ) { // 最初に戻る Step = 0 ; Counter = 0 ; } break ; } } int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { int x, add ; // ウインドウモードで起動 ChangeWindowMode( TRUE ) ; // DXライブラリの初期化 if( DxLib_Init() < 0 ) return -1 ; // 描画先を裏画面にする SetDrawScreen( DX_SCREEN_BACK ) ; // メインループ x = 0 ; add = 8 ; while( ProcessMessage() == 0 ) { // 移動 x += add ; if( x < 0 || x > 640 ) add = -add ; // 描画輝度の設定 SetDrawBright( Bright, Bright, Bright ) ; // 背景を灰色で描画 DrawBox( 0, 0, 640, 480, GetColor( 128,128,128 ), TRUE ) ; // 動く四角形の描画 DrawBox( x, 64, x + 64, 64 + 64, GetColor( 255,255,255 ), TRUE ) ; // メインの処理を1フレーム分行う Main_OneFrameProcess() ; // フェードの処理を1フレーム分行う Fade_OneFrameProcess() ; // 裏画面の内容を表画面に反映 ScreenFlip() ; } // DXライブラリの後始末 DxLib_End() ; // ソフトの終了 return 0 ; }