ループ処理の上でコーディングに迷ってます。dxライブラリ
ゲーム数学なのですが、"30度の角度に一定数動いたあとそのまま角度を保って元の最初の
場所にブロック移動させる(戻る)"という処理を書きたいのですが実装に困ってまして
/ここです/の部分に書いてある条件の処理は完成したのですがそれをどこに書いたらいいかがわかりません、while文のように元の座標まで無限ループするとそこに処理が停滞してしますので
画面のブロックが消えてしまうので実装に困っています、どうすればいいのか教えてくれますでしょうか?
#include "DxLib.h"
#include "math.h"
//#include <iostream>
constexpr double PI = 3.141592654;
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;
}
/*ハンドル*/
//x:48 y : 64
//ウインドウサイズ x:640 y:480
//int pos_x = (640 / 2) - (48 / 2);
//int pos_y = (480 / 2) - (64 / 2);
int pos_x = 100;
int pos_y = 380;
int x = pos_x;
int y = pos_y;
int Select = 0;
int Count = 0;
int color;
int hResource;
int hBall;
int hCharacter[16];
int xx = pos_x;
int yy = pos_y;
typedef struct
{
int x;
int y;
char name[128];
}Menu_t;
Menu_t SelectMenu[3] = {
{200,50,"ゲーム開始"},
{100,100,"コンテニュー"},
{100,150,"終了"},
};
/*計算*/
void Calc();
void Calc() {
}
void end() {
}
int WINAPI WinMain(HINSTANCE hInstanve, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
ChangeWindowMode(true), DxLib_Init(), SetDrawScreen(DX_SCREEN_BACK);
color = GetColor(0, 255, 0);
hResource = LoadGraph("Resource.png");
hBall = LoadGraph("Ball.png");
hCharacter[16] = { 0 };
int hBlock = LoadGraph("Block.png");
LoadDivGraph("char.png", 16, 4, 4, 32, 32, hCharacter);
int color = GetColor(255,255,255);
double angle = PI * 2 / 8;
while (ScreenFlip() == 0 && ProcessMessage() == 0 && ClearDrawScreen() == 0 && gpUpdateKey() == 0) {
//DrawGraph(x,y,hBlock,TRUE);
DrawGraph(pos_x, pos_y, hBlock, TRUE);
pos_x += 2 * cos(0.0174533 * 30);
pos_y -= 2 * sin(0.0174533 * 30);
/*このコード*/
////////////////////////////////////////////
//if (pos_x >200 && pos_y < 100) {
// //break;
//while(pox_x != xx && pos_y != yy)
// if (pos_x != xx && pos_y != yy) {
// pos_x -= 2 * sin(0.0174533 * 30);
// pos_y += 2 * cos(0.0174533 * 30);
// }
//}
////////////////////////////////////////////
//break;
// Calc();
// xx += 2 * cos(0.0174533 * 30);
// yy -= 2 * sin(0.0174533 * 30);
DrawFormatString(0,0,color,"pos_x:%d",pos_x);
DrawFormatString(0,15, color,"pos_y:%d", pos_y);
// WaitTimer(20);
//Graphic_Draw();
}
if (CheckHitKey(KEY_INPUT_ESCAPE) == 1 || CheckHitKey(KEY_INPUT_RETURN) == 1) {
exit(1);
}
WaitKey();
return 0;
}