【pygame】Rect对象

2023-11-08

Rect对象

class pygame.Rect

Rect 是用于存储矩形坐标的 Pygame 对象。
Rect(left, top, width, height) -> Rect
Rect((left, top), (width, height)) -> Rect
Rect(object) -> Rect

属性 & 方法

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 对象的中心
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 对象(如果尺寸为负数)
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 对象与字典中的每个矩形是否有交集

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

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

Rect 对象中的大部分方法在修改矩形的位置、尺寸后会返回一个新的 Rect 拷贝,原始的 Rect 对象不会有任何改变。但有些方法比较特殊,它们会“原地”修改 Rect 对象(也就是说它们会改动原始的 Rect 对象),这些方法都会以 “ip” 作为后缀(“ip” 即 “in-place” 的缩写,“原地”的意思)。

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

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

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

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

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

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

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

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

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

copy() 拷贝 Rect 对象

copy() -> Rect

返回一个新的 Rect 对象,拥有与该 Rect 对象相同的位置和尺寸。

Pygame 1.9 新增加的。

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 对象有交集的键值对;如果一个都没有,返回一个空字典。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【pygame】Rect对象 的相关文章

  • Twisted 的 Deferred 和 JavaScript 中的 Promise 一样吗?

    我开始在一个需要异步编程的项目中使用 Twisted 并且文档非常好 所以我的问题是 Twisted 中的 Deferred 与 Javascript 中的 Promise 相同吗 如果不是 有什么区别 你的问题的答案是Yes and No
  • 递归 lambda 表达式可能吗?

    我正在尝试编写一个调用自身的 lambda 表达式 但我似乎找不到任何语法 或者即使它是可能的 本质上我想将以下函数传输到以下 lambda 表达式中 我意识到这是一个愚蠢的应用程序 它只是添加 但我正在探索可以在 python 中使用 l
  • python 中的并行处理

    在 python 2 7 中进行并行处理的简单代码是什么 我在网上找到的所有示例都很复杂 并且包含不必要的代码 我该如何做一个简单的强力整数分解程序 在每个核心 4 上分解 1 个整数 我真正的程序可能只需要2个核心 并且需要共享信息 我知
  • opencv水印周围的轮廓

    我想在图像中的水印周围画一个框 我已经提取了水印并找到了轮廓 但是 不会在水印周围绘制轮廓 轮廓是在我的整个图像上绘制的 请帮我提供正确的代码 轮廓坐标的输出为 array 0 0 0 634 450 634 450 0 dtype int
  • 检查 Python 中的可迭代对象中的所有元素的谓词是否计算为 true

    我很确定有一个常见的习语 但我无法通过谷歌搜索找到它 这是我想做的 用Java Applies the predicate to all elements of the iterable and returns true if all ev
  • Python3.0 - 标记化和取消标记化

    我正在使用类似于以下简化脚本的内容来解析较大文件中的 python 片段 import io import tokenize src foo bar src bytes src encode src io BytesIO src src l
  • Pandas:如果单元格包含特定文本则删除行

    pandas 中的这段代码不起作用 如果该列包含提供的任何文本 数字 我希望它删除该行 目前 我只能在单元格与我的代码中传递的确切文本匹配时才能使其工作 因为它只删除显示 Fin 的单元格不是金融或金融 df2 df df Team Fin
  • 在 Django OAuth Toolkit 中安全创建新应用程序

    如何将 IsAdminUser 权限添加到 Django OAuth Toolkit 中的 o applications 视图 REST FRAMEWORK DEFAULT PERMISSION CLASSES rest framework
  • Gspread如何复制sheet

    在 Stackoverflow 上进行谷歌搜索和搜索后 我想我找不到有关如何复制现有工作表 现有模板工作表 并将其保存到另一个工作表中的指南 根据文档 有重复表 https gspread readthedocs io en latest
  • Django send_mail SMTPSenderRefused 530 与 gmail

    一段时间以来 我一直在尝试使用 Django 从我正在开发的网站接收电子邮件 现在 我还没有部署它 并且我正在使用Django开发服务器 我不知道这是否会影响它 这是我的 settings py 配置 EMAIL BACKEND djang
  • Tensorflow 与 Keras 的兼容性

    我正在使用 Python 3 6 和 Tensorflow 2 0 并且有一些 Keras 代码 import keras from keras models import Sequential from keras layers impo
  • Geodjango距离查询未检索到正确的结果

    我正在尝试根据地理位置的接近程度来检索一些帖子 正如您在代码中看到的 我正在使用 GeoDjango 并且代码在视图中执行 问题是距离过滤器似乎被完全忽略了 当我检查查询集上的距离时 我得到了预期距离 1m 和 18km 但 18km 的帖
  • SMTP_SSL SSLError: [SSL: UNKNOWN_PROTOCOL] 未知协议 (_ssl.c:590)

    此问题与 smtplib 的 SMTP SSL 连接有关 当与 SMTP 无 ssl 连接时 它正在工作 在 SMTP SSL 中尝试相同的主机和端口时 出现错误 该错误仅基于主机 gmail 设置也工作正常 请检查下面的示例 如果 Out
  • Matplotlib 中 x 轴标签的频率和旋转

    我在下面编写了一个简单的脚本来使用 matplotlib 生成图形 我想将 x tick 频率从每月增加到每周并轮换标签 我不知道从哪里开始 x 轴频率 我的旋转线产生错误 TypeError set xticks got an unexp
  • ANTLR 获取并拆分词法分析器内容

    首先 对我的英语感到抱歉 我还在学习 我为我的框架编写 Python 模块 用于解析 CSS 文件 我尝试了 regex ply python 词法分析器和解析器 但我发现自己在 ANTLR 中 第一次尝试 我需要解析 CSS 文件中的注释
  • 从 NumPy 数组到 Mat 的 C++ 转换 (OpenCV)

    我正在围绕 ArUco 增强现实库 基于 OpenCV 编写一个薄包装器 我试图构建的界面非常简单 Python 将图像传递给 C 代码 C 代码检测标记并将其位置和其他信息作为字典元组返回给 Python 但是 我不知道如何在 Pytho
  • 动态过滤 pandas 数据框

    我正在尝试使用三列的阈值来过滤 pandas 数据框 import pandas as pd df pd DataFrame A 6 2 10 5 3 B 2 5 3 2 6 C 5 2 1 8 2 df df loc df A gt 0
  • Elasticsearch 通过搜索返回拼音标记

    我用语音分析插件 https www elastic co guide en elasticsearch plugins current analysis phonetic html由于语音转换 从弹性搜索中进行一些字符串匹配 我的问题是
  • python 线程安全可变对象复制

    Is 蟒蛇的copy http docs python org 2 library copy html模块线程安全吗 如果不是 我应该如何在 python 中以线程安全的方式复制 deepcopy 可变对象 蟒蛇的GIL http en w
  • 查找总和为给定数字的值组合的函数

    这个帖子查找提供的 Sum 值的组合 https stackoverflow com a 20194023 1561176呈现函数subsets with sum 它在数组中查找总和等于给定值的值的组合 但由于这个帖子已经有6年多了 我发这

随机推荐

  • 智能优化算法 — 蜣螂优化算法(Dung beetle optimizer,DBO)

    引言 小时候 蜣螂还是比较多见的 还顽皮地将粪球给它弄走 或者给它来点障碍 现在放牛的几乎看不到了 蜣螂没东西可推了 也慢慢从我们的视线中消失了 DBO介绍 2022年11月27日 东华大学沈波教授团队 继麻雀搜索算法 Sparrow Se
  • 关于Lab5 github上传后文件名大小写不变

    遇到的问题 由于checkstyle等工具检查出本地包名不符合规范 修改了其大小写之后 重新上传到github上发现包内类中package后包名已经改变 但是文件夹名并没有改变 尝试解决一 执行git config global core
  • spring boot升级spring cloud注意事项

    项目升级 从springboot转成springcloud 记录一些过程中遇到的问题和坑 一 确定版本和组件选型 版本不兼容会造成很多问题 所以需要根据项目使用的Spring Boot Version确定相关版本 此处使用的是Spring
  • for循环达到指定循环次数

  • AngularJs ngList、ngRepeat、ngModelOptions

    ngList 在文本输入的分隔的字符串和字符串数组间做转换 可以是一个固定的字符串分隔符 默认逗号 或正则表达式 格式 ng list value value 表达式 通过这个值分隔字符串 使用代码 div div
  • HeadFirst 设计模式学习笔记14——MVC分析

    随笔 346 文章 0 评论 14 本文已搬家至 HeadFirst 设计模式学习笔记 13 MVC分析
  • Numpy下dtype中的str_与string_的区别

    为什么写这篇文章呢 其实简单来说就是因为搜不到别人有这类的文章呗 所以自己研究了一下 在我的某个程序中需要将数据保存成numpy数组 数组中每个元素又必须是字符串的格式 但是当你输入dtype numpy str的时候 你会发现又三个相近的
  • 修改element样式避坑笔记

    一点要添加这个 popper append to body false 否则就算加了 deep 还是加了 important 对于要修改的样式还是不生效的
  • Vue学习 之 MacOS 安装 webpack

    Vue学习 之 MacOS 安装 webpack webpack 简介 Webpack 是一个非常流行的前端构建工具 它可以将多个模块 包括CSS JavaScript 图片等 打包成一个或多个静态资源文件 bundle 以便用于部署到生产
  • Qt帮助文档

    Qt帮助文档 Qt15 3版本 在国产化平台或者自己编译的Qt版本时 没有Qt帮助文档 导致Qt很不好用 很容易把自己气死 在国产化平台或者自己编译的Qt版本时 没有Qt帮助文档 导致Qt很不好用 很容易把自己气死 链接 link 链接 h
  • 2023华为OD机试真题【保密大楼乘坐电梯】

    题目内容 有一座保密大楼 你从0楼到达指定楼层m 必须这样的规则乘坐电梯 给定一个数字序列 每次根据序列中的数字n上升n层或者下降n层 前后两次操作的方向必须相反 规定首次的方向向上 自行组织序列的顺序按规定操作到达指定楼层 求解到达楼层的
  • html5input输入框设置无边框_HTML 中的 box-border 盒子边框详解

    border 盒子边框 复合属性 设置对象边框的特性 盒子边框三要素 边框粗细 边框样式 边框颜色 语法 border border width border style border color 边框四边的粗细 样式 颜色 以及上下左右每
  • Mac更新之后使用终端提示:The default interactive shell is now zsh.

    1 美图 2 概述 升级完系统之后还遇到了另一个问题 就是在终端下查看的时候会在打开输入内容时有提示 默认的交互shell现在是zsh 要更新您的帐户以使用zsh 请运行 chsh s bin zsh 详情请访问https support
  • QT之滑动切换UI框架

    简介 使用QT制作一个UI图片切换框架 思路 主要通过移动像素坐标差值来判断方向 左上角坐标为 0 0 右加左减 松开减去按压时的横坐标大于0则右移 否则左移 代码展示 define X Threshold Direction 4 X方向移
  • 惠普m132nw清零方法_惠普HP打印机墨盒清零方法

    hp816 hp817是惠普多款打印机产品的标配墨盒 由于适应机型多 这两款墨盒是目前非常畅销的 对于很多用户来说 使用原装墨盒未必是最佳能选择 对使用完毕的墨盒进行加墨是很通常的选择 但注墨之后墨盒计数器的清零非常关键 在此 就为各位传授
  • GO语言实现二叉树基本功能

    用GO语言和用C语言写的思路没有区别 都是利用递归来解决遍历难的问题 这里值得注意的是 在GO中用switch case是完全可以代替if else的 个人觉得在做多项判断时用switch case来写不仅效率更高 思路也更清晰 也使得代码
  • 【目录】从0到1玩转分布式锁底层原理

    一 课程目录 分布式锁是什么 为什么需要分布式锁 如何用MySQL实现一把分布式锁 Redis实现分布式锁的核心原理以及利弊 分布式锁核心类库Redisson初识 Redisson加锁的核心底层源码 Redisson锁是如何做到可重入和互斥
  • 离散行业和流程行业的区别

    所谓离散型生产企业主要是指一大类机械加工企业 它们的基本生产特征是机器 机床 对工件外形的加工 再将不同的工件组装成具有某种功能的产品 由于机器和工件都是分立的 故称之为离散型生产方式 离散行业是指制造企业中的一类企业 他们的最主要特征为
  • 八、C语言进阶:内存

    8 内存 8 1 内存四区 8 1 1 栈区 stack 由编译器自动分配和释放 主要是存放函数参数的值 局部变量的值 8 1 2 堆区 heap 由程序员自己申请分配和释放 需要malloc calloc realloc 函数来申请 用f
  • 【pygame】Rect对象

    Rect对象 class pygame Rect Rect 是用于存储矩形坐标的 Pygame 对象 Rect left top width height gt Rect Rect left top width height gt Rect