Python之pygame学习矩形区域(5)

pygame矩形区域

上篇说到移动基本图形,这次来说下矩形区域的操作。

在pygame中矩形区域这个类比较特殊,在游戏中,所有可见的元素都是以矩形区域来描述位置。

可以从left,top,width和height值的组合创建Rect。也可以从已经是Rect或具有名为“rect”的属性的python对象创建Rect。

任何需要Rect参数的pygame函数也接受这些值中的任何一个来构造Rect。这使得动态创建Rects更容易作为函数的参数。

官网说的不是很懂。。

更改Rect的位置或大小的Rect函数返回带有受影响的更改的Rect的新副本。原始的Rect未被修改。某些方法有一个备用的“就地”版本,它返回None但会影响原始的Rect。这些“就地”方法用“ip”后缀表示。

我们常用到的没有那么多,通常用到就是创建矩形区域对象

pygame.Rect用于存储直角坐标的pygame对象Rect(左,顶,宽,高) - > RectRect((左,上),(宽,高)) - > RectRect(object) - > Rect

矩形区域创建后并不会在表面显示,不跟绘制基本图形一样,创建后直接在表面绘制成像。在不执行pygame.init()方法同样能够直接使用

Rect对象有几个虚拟属性,可用于移动和对齐Rect:

x,y
top, left, bottom, right
topleft, bottomleft, topright, bottomright
midtop, midleft, midbottom, midright
center, centerx, centery
size, width, height
w,h

直接返回的是矩形区域类型,包含位置,大小

可以用调用对象的x或y方法;

返回fk 的x轴位置和y轴位置

这里分别是矩形区域的顶(top),左(left),底(bottom),右(right).

这里分别对应矩形区域的四个角所在的位置

这四个分别对应矩形区域的四个边的中间点坐标。

分别返回矩形区域的中心点坐标(元祖),中心x轴,中心y轴

分别返回矩形区域的宽高(元祖),宽,高

分别返回矩形区域的宽,高(类似上面宽高单词缩写)

上面的方法我们可以使用赋值操作来对矩形区域的大小位置进行改变

赋值操作改变位置

除了上面一些常用属性,还有一些方法;

  • copy()
  • 复制矩形 copy() - > Rect 返回与原始位置和大小相同的新矩形。
  • move()
  • 移动矩形 move(x,y) - > Rect 返回由给定偏移量移动的新矩形。x和y参数可以是任何整数值,正数或负数。
  • move_ip()
  • 将矩形移动到位 move_ip(x,y) - >无 与Rect.move()方法相同,但在适当的位置操作。
  • inflate()
  • 增大或缩小矩形大小 膨胀(x,y) - > Rect 返回一个新的矩形,其大小由给定的偏移量改变。矩形保持以其当前中心为中心。负值会缩小矩形。注意,使用整数,如果给定的偏移量太小(<2> -2),则中心将关闭。
  • inflate_ip()
  • 在适当的位置增大或缩小矩形大小 inflate_ip(x,y) - >无 与Rect.inflate()方法相同,但在适当的位置操作。
  • clamp()
  • 将矩形移到另一个内部 clamp(Rect) - > Rect 返回一个新的矩形,该矩形完全移动到参数Rect中。如果矩形太大而无法放入内部,则它在参数Rect内居中,但其大小不会更改。
  • clamp_ip()
  • 将矩形移动到另一个内部 clamp_ip(Rect) - >无 与Rect.clamp()方法相同,但在适当的位置操作。
  • clip()
  • 在另一个内部种植一个矩形 clip(Rect) - > Rect 返回一个新的矩形,该矩形被裁剪为完全位于参数Rect内。如果两个矩形不重叠,则返回一个0大小的Rect。
  • union()
  • 将两个矩形连接成一个 union(Rect) - > Rect 返回一个完全覆盖两个提供的矩形区域的新矩形。新Rect中可能存在未被
  • union_ip()
  • 将两个矩形连接成一个到位 union_ip(Rect) - >无 与Rect.union()方法相同,但在适当的位置操作。
  • unionall()
  • 许多矩形的联合 unionall(Rect_sequence) - > Rect 返回一个矩形与一系列矩形序列的并集。
  • unionall_ip()
  • 许多矩形的结合,到位 unionall_ip(Rect_sequence) - >无 与Rect.unionall()方法相同,但操作到位。
  • fit()
  • 调整大小并移动纵横比矩形 fit(Rect) - > Rect 返回一个移动并调整大小以适合另一个矩形的新矩形。保留原始Rect的纵横比,因此新的矩形可以在宽度或高度上小于目标。
  • normalize()
  • 正确的负尺寸 normalize() - >无 如果矩形的负大小,这将翻转矩形的宽度或高度。矩形将保持在同一位置,只交换侧面。
  • contains()
  • 测试一个矩形是否在另一个矩形内 contains(Rect) - > bool 当参数完全在Rect内部时返回true。
  • collidepoint()
  • 测试一个点是否在矩形内 collidepoint(x,y) - > bool collidepoint((x,y)) - > bool 如果给定的点在矩形内,则返回true。沿右边或底边的点不被视为在矩形内。
  • colliderect()
  • 测试两个矩形是否重叠 colliderect(Rect) - > bool 如果任一矩形的任何部分重叠(顶部+底部或左侧+右侧边缘除外),则返回true。
  • collidelist()
  • 测试列表中的一个矩形是否相交 collidelist(list) - > index 测试矩形是否与矩形序列中的任何一个发生碰撞。返回找到的第一个碰撞的索引。如果未发现冲突,则返回-1的索引。
  • collidelistall()
  • 测试列表中的所有矩形是否相交 collidelistall(list) - > indices 返回包含与Rect冲突的矩形的所有索引的列表。如果未找到相交的矩形,则返回空列表。
  • collidedict()
  • 测试字典中的一个矩形是否相交 collidedict(dict) - >(键,值) collidedict(dict) - >没有 collidedict(dict,use_values = 0) - >(键,值) collidedict(dict,use_values = 0) - >无 返回与调用Rect对象相交的第一个键和值对。如果未找到任何冲突,None则返回。如果 use_values为0(默认值),则dict的键将用于碰撞检测,否则将使用dict的值。 注意 Rect对象不能用作字典中的键(它们不可清除),因此必须将它们转换为元组/列表。例如rect.collidedict({tuple(key_rect) : value})
  • collidedictall()
  • 测试字典中的所有矩形是否相交 collidedictall(dict) - > [(键,值),...] collidedictall(dict,use_values = 0) - > [(键,值),...] 返回与调用Rect对象相交的所有键和值对的列表。如果未找到冲突,则返回空列表。如果use_values为0(默认值),则dict的键将用于碰撞检测,否则将使用dict的值。 注意 Rect对象不能用作字典中的键(它们不可清除),因此必须将它们转换为元组/列表。例如rect.collidedictall({tuple(key_rect) : value})

原文发布于微信公众号 - 萌海无涯(mhwyhtwa)

原文发表时间:2019-08-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券