我想寫一個簡單的C++程序,輸出一個對象當前的高度,一旦它擊中一個特定的點。我試圖完成的目標是,你有一個物體,從一個不同的位置開始,在重力附加的隨機速度下移動。如果球與牆壁或其他物體碰撞,它應該向後移動,沒有能量損失,但由於重力而仍然繼續下落。一旦球達到特定高度,輸出該值。現在C++邏輯問題
,所有我想現在要做的是檢查,看看是否我的球已經超越了我的寬度範圍。但對於我的生活,我不明白爲什麼我最後一條底部的陳述不會打電話。
我錯過/正在做一些非常愚蠢的事情嗎?
int _tmain(int argc, _TCHAR* argv[])
{
float velocity;
float height, targetHeight;
float gravity;
float time;
float angle;
float width;
float move;
float distance;
gravity = 9.80f;
time = 0;
distance = 0;
cout << "Set Height\n";
cin >> height;
cout << "Set target height\n";
cin >> targetHeight;
cout << "Set Angle (0 - 90): \n";
cin >> angle;
angle *= 3.14 * 180; // convert to radians
cout << "Set velocity (0 - 100): \n";
cin >> velocity;
cout << "Set Play field Width: \n";
cin >> width;
while(height >= target )
{
time++;
distance += velocity * cos(angle) * time;
height += (velocity * sin(angle) * time) - (gravity * pow(time, 2))/2;
}
if(distance == width)
{
cout << "You've hit the wall\n";
}
return 0;
}
你應該在'while'中有'targetHeight'而不是'target'嗎? – ChiefTwoPencils
你不應該再檢查距離== 0來看它是否碰到另一面牆嗎?另外,如果球移動速度足夠快以至於穿過牆壁?您應該檢查是否(距離> =寬度或距離<= 0) – Chachmu
遇到「浮點」相等測試時,我總是很震驚! – xtofl