Python之Pygame.rect函数

本文详细介绍了Pygame中Rect对象的使用方法,包括如何创建Rect对象、如何利用各种方法进行移动、逻辑运算及碰撞检测等操作。此外还介绍了Rect对象的一些特殊属性。

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,h

For 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 指定的边缘位置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值