今現在のコードは以下のとおりです。
#include "dxlib.h"
#include <math.h>
#define Grav 9.8067
int Key[256];
int gpUpdateKey() {
char tmpKey[256];
GetHitKeyStateAll(tmpKey);
for (int i = 0; i < 256; i++){
if (tmpKey[i] != 0) {
Key[i]++;
}
else {
Key[i] = 0;
}
}
return 0;
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow){
ChangeWindowMode(TRUE), SetGraphMode(320, 240, 32);
if (DxLib_Init() == -1) {
return -1;
}
SetDrawScreen(DX_SCREEN_BACK);
int PlayerX = 8, PlayerY = 232, PlayerHandle, jflag = 0, dir = 0, time2, CurTime,JumpPower = 0, j_max;
double JumpSpace = 0, time1;
PlayerHandle = LoadGraph("テスト用.png");
while (ScreenFlip() == 0 && ProcessMessage() == 0 && ClearDrawScreen() == 0&& gpUpdateKey() == 0) {
//落下処理
PlayerY -= JumpPower;
JumpPower -= 1;
//着地処理
if (PlayerY > 230) {
jflag = 0;
PlayerY = 230;
JumpPower = 0;
}
//移動処理
if (Key[KEY_INPUT_RIGHT] >= 1) {//右に移動
dir = 0;
PlayerX += 5;
Sleep(5);
}
if (Key[KEY_INPUT_LEFT] >= 1) {
dir = 1;
PlayerX -= 5;
Sleep(5);
}
if (Key[KEY_INPUT_SPACE] == 1) {
JumpSpace = 0.250;
time1 = GetNowCount();
jflag = 1;
}
if (jflag == 1) {
time2 = GetNowCount();
CurTime = (double)(time2 - time1) / 1000.000;
j_max = (int)((sqrt(2.000 * Grav * JumpSpace) * CurTime - 0.500 * Grav * CurTime* CurTime) * 232.000 / JumpSpace);
JumpPower = j_max / CurTime;
}
if (dir == 0)
DrawRotaGraph(PlayerX, PlayerY, 1.0, 0.0, PlayerHandle, TRUE, FALSE);
else
DrawRotaGraph(PlayerX, PlayerY, 1.0, 0, PlayerHandle, TRUE, TRUE);
}
DxLib_End();
return 0;
}