2011-12-12 84 views
1

我正在C#中製作一個Windows窗體程序,圖像以45度角在窗口中反彈。我需要幫助的部分是我必須製作程序,然後用戶可以調整圖像在0度和90度之間反彈的角度。我想不出一個簡單的方法來做到這一點,我真的需要幫助。C#彈跳球角度變化

這是我到目前爲止的計時器代碼。 intSideposition是圖像的左側值。 intTopPosition是圖像的最大值。 intLeftSpeed是圖像的水平速度。 intTopSpeed是圖像的垂直速度。 817和380是圖像將反彈的窗口的邊界。目前圖像將以45度角反彈。

//Moves the label by a factor of whatever intLeftSpeed is 
intSidePosition = intSidePosition + intLeftSpeed; 
intTopPosition = intTopPosition + intTopSpeed; 
this.lblSprite.Left = intSidePosition; 
this.lblSprite.Top = intTopPosition; 

//Checks if the sprite has hit the boundaries of the window, causing it to bounce 
if (this.lblSprite.Left <= 0) 
{ 
    intLeftSpeed = intLeftSpeed * -1; 
} 
else if (this.lblSprite.Left >= 817) 
{ 
    intLeftSpeed = intLeftSpeed * -1; 
} 
else if (this.lblSprite.Top >= 380) 
{ 
    intTopSpeed = intTopSpeed * -1; 
} 
else if (this.lblSprite.Top <= 0) 
{ 
    intTopSpeed = intTopSpeed * -1; 
} 
lblAngle.Text = intAngle.ToString(); 
+2

向我們展示一些代碼總是有幫助 – vdbuilder

+0

如果這是作業,請標記爲這樣。 – Aaron

+0

不關閉它,那是我學習計算機圖形時最喜歡的一個... –

回答

1

你必須在這裏使用三角函數來獲得球的任何角度。

此外,所有變量應該變成double s。速度和位置變量!

您將作爲

double speedX = Math.Cos(angle); 
double speedY = Mach.Sin(angle); 

一些諸如初始化我不會告訴你,這裏的角度將弧度,不度。 Ooops,我只是:)

+0

好吧丹尼爾我需要一些更多的幫助。在我的程序中,我會把這個放在哪裏?我試圖把它放在if語句中,結果是圖像不會反彈。我的角度也是以弧度爲單位:( – user1033065

+0

)你應該把它放到初始化中,在你之前的變量被設置爲1的地方。至於弧度到度,自己想象出來:) –

0

你需要使你的intLeftSpeed和intTopSpeed使所需的角度(或至少近似它)。他們目前總是平等的,所以他們總是產生一個45度的角度。