我一直在试验Pygame,并遇到了一个我无法找到答案的问题。在this paste中,展示了我的基本游戏框架。如何正确完成ballSnapLeft()
定义?
编辑:我不是在寻找我的代码要完成,但我正在寻找有人解释'Rect'类(?)如何工作以及如何应用它。
Edit2:我试图使用x和y坐标来做到这一点,但我认为有一种更简单的方法可以实际工作,而不是使用粗暴坐标。
答案 0 :(得分:4)
来自Making Games With Python and Pygame:
myRect.left 左侧X坐标的int值 长方形。
<强> 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
答案 1 :(得分:2)
执行ballRect.right = playerRect.left - (0, 1)
时是否收到错误?
ballRect.right
和ballRect.left
以及相关的top
,bottom
,width
,height
值均为int
类型,不能添加或减去元组。
您可能需要查看pygame.Rect文档,并考虑使用pygame.Rect.move(x,y)
,它会为您移动矩形的坐标。
值得注意的是,如果您更改myRect.topleft
,那么相应的top
,left
,bottom
等值将更改为以便rect
翻译并保留其大小。