2014-02-15 82 views
0

所以我試圖讓球產生在框架上的隨機位置,並讓它們通過屏幕中心。唯一的問題是,我無法用浮動速度更新位置。因此,事情並沒有通過中心,他們是有點關閉,而不是我想要它的工作。有任何想法嗎?需要在屏幕上移動物體的浮動精度Pygame

我會後整個代碼,但基本上我得到的速度看起來像: [-4.6076,-3.2818],和我更新的位置,像這樣:

def movement(self): 
    self.pos[0] += self.vel[0] 
    self.pos[1] += self.vel[1] 

的唯一的事情就是當我嘗試像這樣移動它時,我得到一個錯誤,表示int參數是預期的,但卻有一個浮點數。我有點不舒服,因爲我需要更多的精度,而不僅僅是一個整數,我可以通過任何方式解決這個問題?此外,我正在使用trig來計算速度,因此這就是浮標的原因。

隨時將感激。 謝謝你!

整個錯誤:

Traceback (most recent call last): 
File "G:\Tonematrix_2\circle-circle-collisionrect.py", line 125, in <module> 
class loop(object): 
File "G:\Tonematrix_2\circle-circle-collisionrect.py", line 138, in loop 
ball.render() 
File "G:\Tonematrix_2\circle-circle-collisionrect.py", line 90, in render 
pygame.draw.circle(FRAME, self.color , self.pos ,self.radius, 0) 
TypeError: integer argument expected, got float 
+1

請您發佈完整的錯誤信息? –

+0

你描述的錯誤聽起來不像它來自你認爲它的來源。也許你不小心嘗試訪問一個浮點列表作爲索引? – user2357112

回答

2

這是不可能得到更準確的不僅僅是一個整數,因爲你不能顏色的像素的一小部分。我建議在內部使用浮點數,然後舍入屏幕上顯示的實際值。

+0

如果我在一個點周圍圍成一圈,那麼真的不可能讓它們都聚焦在一個點上。因爲要得到合成速度,我需要使用trig,這會給出一些非常難看的浮點數。所以這是唯一的方法,那麼就會有錯誤的餘地呢? – user3260745

0

舍入是一個很差的答案,但我沒有任何其他答案。

如果您在行駛x或y軸時將速度設置爲1,然後乘以您的速度係數,那麼運行良好。

對角線是問題。你可以設置你的對角線的最小值是v(1,1)。這意味着你有一個sqrt(2)的幅度比1快。每當你走向對角線時,你都會更快地移動。如果你想做任何不是45度的角度,情況就會變得更糟。