Python--pygame.Rect

基本参数

Rect 是用于存储矩形坐标的 Pygame 对象,一个 Rect 对象可以由 left,top,width,height 几个值创建。

Rect(left, top, width, height) -> Rect
left=水平距离,top=垂直距离,width=矩形宽,height=矩形长

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

Rect(object) -> Rect

Rect方法

  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 对象的中心

  1. 逻辑类型

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 对象(如果尺寸为负数)

  1. 检测类型

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 对象与字典中的每个矩形是否有交集

方法详解

copy()
拷贝 Rect 对象。
copy() -> Rect
返回一个新的 Rect 对象,拥有与该 Rect 对象相同的位置和尺寸。

move()
移动 Rect 对象。
move(x, y) -> Rect
返回一个新的 Rect 对象。x 和 y 参数可以是正数或负数,用于指定新对象的偏移地址。

move_ip()
原地移动 Rect 对象。
move_ip(x, y) -> None
效果跟 move() 方法一样,区别是这个直接作用于当前 Rect 对象,而不是返回一个新的。

inflate()
放大和缩小 Rect 对象的尺寸。
inflate(x, y) -> Rect
返回一个新的 Rect 对象。x 和 y 参数指定新的对象放大或缩小多少像素。新的对象保持与原始 Rect 对象在同一个中心上。

inflate_ip()
原地放大和缩小 Rect 对象的尺寸。
inflate_ip(x, y) -> None
效果跟 inflate() 方法一样,区别是这个直接作用于当前 Rect 对象,而不是返回一个新的。

clamp()
将一个 Rect 对象移动到另一个 Rect 对象的中心。
clamp(Rect) -> Rect
返回一个新的 Rect 对象,范围是以 Rect 参数指定的对象为中心,保持原始 Rect 对象的尺寸不变。如果原始 Rect 对象的尺寸比 Rect 参数的要大,那么保持中心重叠,尺寸不变。

clamp_ip()
原地将一个 Rect 对象移动到另一个 Rect 对象的中心。
clamp_ip(Rect) -> None
效果跟 clamp() 方法一样,区别是这个直接作用于当前 Rect 对象,而不是返回一个新的。

clip()
获取两个 Rect 对象互相重叠的部分。
clip(Rect) -> Rect
返回一个新的 Rect 对象,范围是原始 Rect 对象与 Rect 参数指定的对象互相重叠的部分。如果两个 Rect 对象没有任何重叠,则返回一个 (0, 0, 0, 0) 的 Rect 对象。

union()
将两个 Rect 对象合并。
union(Rect) -> Rect
返回一个新的 Rect 对象,范围将包含原始 Rect 对象与 Rect 参数指定的对象。由于结果返回一个新的矩形,所以会产生一些多与的空间。

union_ip()
原地将两个 Rect 对象合并。
union_ip(Rect) -> None
效果跟 union() 方法一样,区别是这个直接作用于当前 Rect 对象,而不是返回一个新的。

unionall()
将多个 Rect 对象合并。
unionall(Rect_sequence) -> Rect
返回一个新的 Rect 对象,范围将包含 Rect_sequence 参数指定的序列中所有的 Rect 对象。

unionall_ip()
原地将多个 Rect 对象合并。
unionall_ip(Rect_sequence) -> None
效果跟 unionall() 方法一样,区别是这个直接作用于当前 Rect 对象,而不是返回一个新的。

fit()
按照一定的宽高比调整 Rect 对象。
fit(Rect) -> Rect
返回一个新的 Rect 对象,范围是 Rect 参数的对象按照原始 Rect 对象的宽高比调整得来。

normalize()
翻转 Rect 对象(如果尺寸为负数)。
normalize() -> None
如果 width 或 height 存在负数,则做出相应的翻转,使其变为正数。翻转后的 Rect 仍然在原来的位置,只是修改其相应的属性值。

contains()
检测一个 Rect 对象是否完全包含在该 Rect 对象内。
contains(Rect) -> bool
如果 Rect 参数指定的对象完全包含在该 Rect 对象内,返回 True,否则返回 False。

collidepoint()
检测一个点是否包含在该 Rect 对象内。
collidepoint(x, y) -> bool
collidepoint((x,y)) -> bool
如果给定的点在该 Rect 对象内,返回 True,否则返回 False。
一个点在 Rect 的 right 或 bottom 边缘上时,并不被认为包含在该矩形内。

colliderect()
检测两个 Rect 对象是否重叠。
colliderect(Rect) -> bool
如果两个 Rect 对象有任何重叠的地方,返回 True,否则返回 False。
注意:right 和 bottom 指定的边缘位置并不属于对应的矩形。

collidelist()
检测该 Rect 对象是否与列表中的任何一个矩形有交集。
collidelist(list) -> index
返回值是第 1 个有相交的矩形所在列表中的索引号(如果有的话),否则返回 -1。

collidelistall()
检测该 Rect 对象与列表中的每个矩形是否有交集。
collidelistall(list) -> indices
返回一个列表,包含所有与该 Rect 对象有交集的元素;如果一个都没有,返回一个空列表。

collidedict()
检测该 Rect 对象是否与字典中的任何一个矩形有交集。
collidedict(dict) -> (key, value)
返回值是第 1 个有相交的矩形所在字典中的键和值;如果没有找到,返回 None。
注意:因为 Rect 对象不是哈希值,所以不能作为字典的键存在,因此比较的只有值。

collidedictall()
检测该 Rect 对象与字典中的每个矩形是否有交集。
collidedictall(dict) -> [(key, value), …]
返回一个列表,包含所有与该 Rect 对象有交集的键值对;如果一个都没有,返回一个空字典。
注意:因为 Rect 对象不是哈希值,所以不能作为字典的键存在,因此比较的只有值。

参考文章

[1]:版权声明:本文为CSDN博主「来自江南的你」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_41556318/article/details/86304872
[2]:版权声明:本文为CSDN博主「YZXnuaa」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/YZXnuaa/article/details/79011795

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值