2013-10-06 85 views
1

我一直在試驗Pygame,並遇到了一個我找不到答案的問題。在this paste中,展示了我的基本遊戲框架。我如何正確完成我的ballSnapLeft()定義?如何使用Pygame Rect

編輯:我不是在尋找我的代碼來完成,但我正在尋找人來解釋'Rect'類(?)是如何工作的,以及如何應用它。

編輯2:我試圖使用x和y座標來這樣做,但我認爲有一個更簡單的方法可以實際工作,而不是使用粗體座標。

回答

3

Making Games With Python and Pygame:所述 矩形的左側的

myRect.left所述的int值X座標。

myRect.right 該矩形右側的X座標的int值。

myRect.top 矩形頂端的Y座標的int值。

myRect.bottom 底部Y座標的int值。

因爲所有這些屬性都返回整數,這可能就是爲什麼你的代碼不工作。

此外,如果您的目標ballSnapLeft()將球移動到遠離球員的位置,ballRect.right = playerRect.left - distance只會改變矩形的X座標。爲了使球也在Y座標中移動,你可以做類似

def ballSnapTop(): 
    ballRect.top = playerRect.bottom - distance 
2

在執行ballRect.right = playerRect.left - (0, 1)時出現錯誤?

ballRect.rightballRect.left,與相關topbottomwidthheight值,是int類型一起,不能有元組添加或從中減去。

您可能需要查看pygame.Rect文檔,並考慮使用pygame.Rect.move(x,y),它將爲您移動矩形的座標。

另外值得一提的是,如果你改變,例如,myRect.topleft,那麼相應的topleftbottom等..值將使得rect翻譯並保留其大小改變。