#include "DxLib.h" #include #include #include #include #pragma warning(disable : 4996) int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ){ /* 変数の宣言はここから */ int Cr[5] ; double x,y; double vx,vy; int tmp[4]; int r; int hit; double e; /* 変数の宣言はここまで */ /* ここから変更する必要なし */ SetGraphMode( 640 , 480 , 32 ) ; if( ChangeWindowMode(TRUE) != DX_CHANGESCREEN_OK || DxLib_Init() == -1 ) return -1; SetDrawScreen( DX_SCREEN_BACK ); //描画先を裏画面に設定 /* ここまで変更する必要なし */ Cr[0] = GetColor( 0 , 0 , 255 ) ; // 青色の値を取得 Cr[1] = GetColor( 255 , 0 , 0 ) ; // 赤色の値を取得 Cr[2] = GetColor( 0 , 255 , 0 ) ; // 翠色の値を取得 /* ここからソースコードの記述 */ // ここでボール1の座標設定 x = 320; y = 240; vx= 5.0; vy= 5.0; // ボールの半径の設定 r = 5; // 反発係数の設定 e = 0.5; // 回数の設定 hit= 0; while( ProcessMessage() == 0 && CheckHitKey( KEY_INPUT_ESCAPE ) == 0 ){ //ESCキーでWhile文を脱出 ClearDrawScreen() ; //画像描画の初期化、消さないこと // 文字の表示 DrawFormatString( 420 , 40 , GetColor(255,255,255) , "ボール赤 Vx = %.2f" ,vx ) ; DrawFormatString( 420 , 60 , GetColor(255,255,255) , "ボール赤 Vy = %.2f" ,vy ) ; DrawFormatString( 420 , 80 , GetColor(255,255,255) , "反発係数 e = %f" , e ) ; // 正方形の箱の設定 DrawBox( 40 , 40 , 400 , 400 , Cr[0] , FALSE ) ; // ボールの設定 DrawCircle( (int)x , (int)y , r , Cr[1] , TRUE ) ; // ボールの当たり判定の条件 if( ( x - r < 40 && vx < 0 ) || ( x + r > 400 && vx > 0 ) ){ /* 条件式2 横方面の壁の接触の判定式 */ vx = -vx * e; hit++; }else if( ( y - r < 40 && vy < 0 ) || ( y + r > 400 && vy > 0 ) ){ /* 条件式3 縦方面の壁の接触の判定式 */ vy = -vy * e; hit++; } // ボールの進行 x += vx; y += vy; ScreenFlip() ; //裏画面に描画したグラフィックを表示 if(hit > 10){ break; } } /* ここまでソースコードの記述 */ DxLib_End() ; return -1; }