2013-10-06 61 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翻译并保留其大小改变。