ページ 11

DXライブラリでの鉛直投げ上げの質問です

Posted: 2017年2月05日(日) 19:49
by yg
以下のコードを入力を入力したのですがyが-284・・・とよくわからない値を出しました
原因がわからないので教えてほしいです

//ここからコード

コード:

#include "DxLib.h"
#include <math.h>

#define g 9.8067

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
	ChangeWindowMode(TRUE);          // ウインドウモードに変更
	if (DxLib_Init() == -1) return -1; //DXライブラリ初期化 エラーが起きたら終了 

	int x, y, v, time;
	char key[256];
	
	y = 500;
	x = 200;
	SetDrawScreen(DX_SCREEN_BACK);
	while (ProcessMessage()+GetHitKeyStateAll(key)+ScreenFlip()+ClearDrawScreen()==0) {
	
		if (key[KEY_INPUT_Z]==1) {
			break;
		}
		
		if (key[KEY_INPUT_X] == 1) {
			time = GetNowCount();
			v = 20;
		}

		//重力
		y = y + floor(v*((GetNowCount() - time) / 1000) -
			(4.9*((GetNowCount() - time) / 1000)*((GetNowCount() - time) / 1000)));

		if (y >= 500) {
			y = 500;
			v = 0;
		}
		
		DrawBox(x, y, x + 50, y + 50, GetColor(255, 200, 0), TRUE);
		DrawFormatString(0,0,GetColor(255,255,255),"(%d,%d)",x,y);
	}


	DxLib_End();// DXライブラリ使用の終了処理
	return 0;// ソフトの終了
}

Re: DXライブラリでの鉛直投げ上げの質問です

Posted: 2017年2月05日(日) 20:36
by みけCAT
とりあえず実行しなくてもわかることは、プログラムの起動時からXキーを押していないと、
不定であるみ初期化の自動変数vやtimeの値を28行目で計算に使用し、変なことになりそうですね。

Re: DXライブラリでの鉛直投げ上げの質問です

Posted: 2017年2月05日(日) 20:45
by yg
>>2
返信ありがとうございます
vに0を代入してみましたが直りませんでした

Re: DXライブラリでの鉛直投げ上げの質問です

Posted: 2017年2月05日(日) 20:58
by みけCAT
29行目にある
yg さんが書きました:

コード:

(4.9*((GetNowCount() - time) / 1000)*((GetNowCount() - time) / 1000))
の項にはvが含まれていないので、vを0にしても影響を受けず、未初期化で不定のtimeの影響を受けそうでしょう。

Re: DXライブラリでの鉛直投げ上げの質問です

Posted: 2017年2月05日(日) 21:11
by yg
>>4
ありがとうございます
変な数値が消えて何とか描画された箱が見えるようになりました!!
あとはたぶん公式の入力の問題なので大丈夫かと思います!!

Re: DXライブラリでの鉛直投げ上げの質問です

Posted: 2017年2月05日(日) 21:11
by yg
たぶん解決しました!!