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

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
yg

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

#1

投稿記事 by yg » 8年前

以下のコードを入力を入力したのですが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;// ソフトの終了
}

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

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

#2

投稿記事 by みけCAT » 8年前

とりあえず実行しなくてもわかることは、プログラムの起動時からXキーを押していないと、
不定であるみ初期化の自動変数vやtimeの値を28行目で計算に使用し、変なことになりそうですね。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

yg

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

#3

投稿記事 by yg » 8年前

>>2
返信ありがとうございます
vに0を代入してみましたが直りませんでした

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

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

#4

投稿記事 by みけCAT » 8年前

29行目にある
yg さんが書きました:

コード:

(4.9*((GetNowCount() - time) / 1000)*((GetNowCount() - time) / 1000))
の項にはvが含まれていないので、vを0にしても影響を受けず、未初期化で不定のtimeの影響を受けそうでしょう。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

yg

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

#5

投稿記事 by yg » 8年前

>>4
ありがとうございます
変な数値が消えて何とか描画された箱が見えるようになりました!!
あとはたぶん公式の入力の問題なので大丈夫かと思います!!


閉鎖

“C言語何でも質問掲示板” へ戻る