1.参数设置

Pygame 通过 Rect 对象存储和操作矩形区域。一个 Rect 对象可以由 left,top,width,height 几个值创建。Rect 也可以是由 Pygame 的对象所创建,它们拥有一个属性叫“rect”。


任何需要一个 Rect 对象作为参数的 Pygame 函数都可以使用以上值构造一个 Rect。这样使得作为参数传递的同时创建 Rect 成为可能。


Rect 对象中的大部分方法在修改矩形的位置、尺寸后会返回一个新的 Rect 拷贝,原始的 Rect 对象不会有任何改变。但有些方法比较特殊,它们会“原地”修改 Rect 对象(也就是说它们会改动原始的 Rect 对象),常用rect函数的参数有以下形式:

x,y
     top, left, bottom, right
     topleft, bottomleft, topright, bottomright
     midtop, midleft, midbottom, midright
     center, centerx, centery
     size, width, height
     w,hFor example:
 Rect(left, top, width, height) -> Rect 


 Rect((left, top), (width, height)) -> Rect




Rect(object) -> Rect

上边这些属性均可以被赋值,例如:

rect1.right = 10
     rect2.center = (20,30)




2.Rect函数

2.1移动类型

pygame.Rect.copy()  —  拷贝 Rect 对象 

     pygame.Rect.move()  —  移动 Rect 对象 

     pygame.Rect.move_ip()  —  原地移动 Rect 对象 

     pygame.Rect.inflate()  —  放大和缩小 Rect 对象的尺寸 

     pygame.Rect.inflate_ip()  —  原地放大和缩小 Rect 对象的尺寸 

     pygame.Rect.clamp()  —  将一个 Rect 对象移动到另一个 Rect 对象的中心 

    pygame.Rect.clamp_ip()  —  原地将一个 Rect 对象移动到另一个 Rect 对象的中心

给 size,width,height 属性赋值将改变矩形的尺寸;给其它属性赋值将移动矩形。注意:一些属性是整数,一些是整数对。


2.2逻辑类型

pygame.Rect.clip()  —  获取两个 Rect 对象互相重叠的部分 

     pygame.Rect.union()  —  将两个 Rect 对象合并 

     pygame.Rect.union_ip()  —  原地将两个 Rect 对象合并 

     pygame.Rect.unionall()  —  将多个 Rect 对象合并 

     pygame.Rect.unionall_ip()  —  原地将多个 Rect 对象合并 

     pygame.Rect.fit()  —  按照一定的宽高比调整 Rect 对象 

    pygame.Rect.normalize()  —  翻转 Rect 对象(如果尺寸为负数)

#Rect 对象的坐标都是整数,size 的值可以是负数,但在大多数情况下被认为是非法的

2.3 检测类型

 

pygame.Rect.contains()  —  检测一个 Rect 对象是否完全包含在该 Rect 对象内 

     pygame.Rect.collidepoint()  —  检测一个点是否包含在该 Rect 对象内 

     pygame.Rect.colliderect()  —  检测两个 Rect 对象是否重叠 

     pygame.Rect.collidelist()  —  检测该 Rect 对象是否与列表中的任何一个矩形有交集 

     pygame.Rect.collidelistall()  —  检测该 Rect 对象与列表中的每个矩形是否有交集 

     pygame.Rect.collidedict()  —  检测该 Rect 对象是否与字典中的任何一个矩形有交集 

    pygame.Rect.collidedictall()  —  检测该 Rect 对象与字典中的每个矩形是否有交集

还有一些方法可以实现矩形间碰撞检测,大多数 Python 的容器可以用于检索其中的元素与某个 Rect 对象是否碰撞。

Rect 对象覆盖的范围并不包含 right 和 bottom 指定的边缘位置。

对了方便大家移动和对齐,Rect 对象提供以下这些虚拟属性:

复制代码

如果一个 Rect 对象的 width 或 height 非 0,那么将在非 0 测试中返回 True。一些方法返回尺寸为 0 的 Rect 对象,用于表示一个非法的矩形。

还有一些方法可以实现矩形间碰撞检测,大多数 Python 的容器可以用于检索其中的元素与某个 Rect 对象是否碰撞。

Rect 对象覆盖的范围并不包含 right 和 bottom 指定的边缘位置。