



28. ジャンプの考え方2
先ほどは鉛直方向に投げ上げでしたけど、今度は斜めに投げ上げてみましょう。
x方向は等速運動をしますから、一定の速度です。つまり
x = 定数 * 時間;
でもとまるのです。今回は仮に、
| x = 500 * t; |
としておきましょう。xこの行が加わっただけで、他の部分はかわっていません。ではサンプルを見て見ましょう。
#include "DxLib.h"
#include <math.h>
#define g 9.8067
#define y_max 2.000
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
ChangeWindowMode( TRUE ) ; // ウインドウモードに変更
if( DxLib_Init() == -1 ) return -1; //DXライブラリ初期化 エラーが起きたら終了
int x,y,image[16],time1,time2,flag=0;
double t;
char Key[256];
SetDrawScreen( DX_SCREEN_BACK ) ;//描画先を裏画面に設定
LoadDivGraph( "char.png" , 16 , 4 , 4 , 32 , 32 , image ) ;//画像を分割してimage配列に保存
while(1){
ClearDrawScreen();//裏画面のデータを全て削除
GetHitKeyStateAll( Key ) ;
if( ProcessMessage() == -1 ) break ;
if( Key[ KEY_INPUT_RETURN ] == 1 ){
time1 = GetNowCount();
flag=1;
}
if(flag==1){
time2 = GetNowCount() ;
t = (double)(time2 - time1) / 1000.000;
x = t*500;
y = (int)((sqrt ( 2.000 * g * y_max) * t - 0.500 * g * t * t ) * 480.000 / y_max);
if(y>=0)
DrawGraph( x , 480-y , image[8] , TRUE );
else
flag=0;
}
if( Key[ KEY_INPUT_ESCAPE ] == 1 ) break;//Escボタンが押されたらブレイク
ScreenFlip() ;//裏画面データを表画面へ反映
}
DxLib_End() ;// DXライブラリ使用の終了処理
return 0 ;// ソフトの終了
}
実行結果

注意:黄色い線や文字は出ません。
- Remical Soft -