Pygame:display.update() 在时钟延迟后才会更新

2024-03-02

我正在使用 pygametime.Clock以较低的 FPS 运行我的游戏,我注意到我的输入似乎需要额外一帧才能生效。我做了一些调试,发现这不是问题pygame.event.get()而是与pygame.display.update()。我编写了一个简单的程序来演示该问题:(程序的说明位于代码片段下方)

import pygame, sys
from pygame.locals import *

pygame.init()
screen = pygame.display.set_mode((500, 500))
clock = pygame.time.Clock()
colour = 1
key_press = False

while True:
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            sys.exit()
        elif event.type == KEYDOWN:
            screen.fill((0,255,0))
            key_press = True
            print("A key was pressed.")

    if not key_press:
        screen.fill((colour*255, colour*255, colour*255))
        colour = not colour
    else:
        key_press = False

    pygame.display.update()
    clock.tick(0.5)

该程序每两秒使屏幕在黑白之间闪烁一次,每当按下任意键时,屏幕就会变为绿色并显示"A key was pressed"将被打印到控制台。但是,当我运行它时,文本会在正确的时间打印,但屏幕直到下一帧才会变为绿色。这让我相信pygame.display.update()当我调用该函数时没有更新屏幕。

问题似乎出在调用后立即延迟pygame.display.update()。如果更改时钟的 FPS,问题仍然存在。如果您延迟,也会发生这种情况time.wait() or pygame.time.delay()代替Clock.tick().

我注意到的另一件有趣的事情是,如果你颠倒我的示例中最后两行代码的顺序(pygame.display.update() and clock.tick(0.5)),您可能期望屏幕会发生变化two按下一个键(而不是按下一个键)后的时钟周期。但是,如果我这样做,我会得到与按其他顺序时完全相同的效果。

我不确定这是一个错误还是我刚刚错过了这里发生的一些微妙的事情。我正在 macOS 上运行 Python 3.6.2 并使用 Pygame v1.9.3。您能提供的任何帮助将不胜感激!


我能够通过在 pygame.display.update() 调用和时钟之间调用 pygame.event.pump() (它不会清除事件队列,因此不会丢失事件处理)来修复一个程序中的此故障。勾选(FPS)调用。基本上,我的主游戏循环结束于:

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

Pygame:display.update() 在时钟延迟后才会更新 的相关文章

  • 对 Pandas DataFrame 进行类型检查

    我想对 Pandas DataFrames 进行类型检查 即我想指定 DataFrame 必须具有哪些列标签以及哪种数据类型 dtype 存储在其中 一个粗略的实现 受此启发question https stackoverflow com
  • 使用 Python 3 动态插入到 sqlite

    我想使用 sqlite 写入多个表 但我不想提前手动指定查询 有数十种可能的排列 例如 def insert sqlite tablename data list global dbc dbc execute insert into tab
  • 哪个版本的 Miniconda 具有适用于 Windows 64 位的 Python 3.6?

    我正在开发一个需要这些深度学习库的项目 keras 和 tensorflow 不幸的是 这些不适用于 Python 3 7 有人可以告诉我一个带有 Python 3 6 的 Miniconda 版本 适用于 Windows 64 位 吗 我
  • 如何使用 PyCharm 运行 Pylint

    我想将 Pylint 配置为我正在处理的 Python 项目的整个项目目录中的外部工具 我尝试将存储库用作模块 init py没有的话 这两种方式都不起作用 我在设置 Pylint 与 PyCharm 一起运行时遇到困难 我知道我应该将它作
  • falcon,AttributeError:“API”对象没有属性“create”

    我正在尝试测试我的猎鹰路线 但测试总是失败 而且看起来我把所有事情都做对了 my app py import falcon from resources static import StaticResource api falcon API
  • 使用 python requests 模块时出现 HTTP 503 错误

    我正在尝试发出 HTTP 请求 但当前可以从 Firefox 浏览器访问的网站响应 503 错误 代码本身非常简单 在网上搜索一番后我添加了user Agent请求参数 但也没有帮助 有人能解释一下如何消除这个 503 错误吗 顺便说一句
  • 如何结合pytube和tkinter标签来显示进度?

    我正在编写从 youtube 下载歌曲的小程序 使用 pytube 我想添加 python tkinter GUI 以在下载文件时显示百分比值 现在 当我执行代码时 程序首先下载文件 大约需要 60 秒 然后才显示 100 的标签 如果我希
  • 如何使用 Pandas、Numpy 加速 Python 中的嵌套 for 循环逻辑?

    我想检查一下表的字段是否TestProject包含了Client端传入的参数 嵌套for循环很丑陋 有什么高效简单的方法来实现吗 非常感谢您的任何建议 def test parameter a list parameter b list g
  • Python排序算法[重复]

    这个问题在这里已经有答案了 我在Python中实现了不同的排序算法 以更好地理解它们 我想知道Python的内置排序方法实现什么类型的排序 这是一个叫做Timsort http en wikipedia org wiki Timsort由
  • Pygame - 使用 SurfArray 将某种颜色的像素重新着色为另一种颜色(数组切片问题)

    我正在尝试为游戏制作调色板交换功能 并且正在尝试找到一种将某种颜色的像素颜色更改为另一种颜色的方法 我已经能够使用我在教程中找到的这个函数使所有像素具有相同的颜色 def color surface self surface red gre
  • Python:返回 // 正则表达式之间的字符串[重复]

    这个问题在这里已经有答案了 我仍然不明白正则表达式 我阅读了文档 但是在我想出了正则表达式字符之后 那么如何使用它们呢 例如 我只想返回前两个斜杠之间的任何内容 en lemon peel n ca llimona n is 的输出应该是
  • 在Python中,如何将矩阵逆时针旋转90度?

    gt gt gt def rotate matrix k List List int For example if I have m 1 2 3 2 3 3 5 4 3 rotate matrix m should give me 3 3
  • 无法在 virtualenv 中安装 libxml2

    我有一个问题libxml2蟒蛇模块 我正在尝试将其安装在python3 虚拟环境使用以下命令 pip install libxml2 python3 但它显示以下错误 Collecting libxml2 python3 Using cac
  • 在请求中设置端口

    我正在尝试利用cgminer使用 Python 的 API 我对利用requests图书馆 我了解如何做基本的事情requests but cgminer想要更具体一点 我想缩小 import socket import json sock
  • 如何同时接受int和float类型的输入?

    我正在制作一个货币转换器 如何让 python 同时接受整数和浮点数 我就是这样做的 def aud brl amount From to ER 0 42108 if amount int if From strip aud and to
  • 在 pygame 中添加/创建下拉选择框的提示

    我正在 pygame 中制作一个游戏 需要有一个下拉框和单选按钮来选择选项 任何有关如何进行此操作的提示将不胜感激 Regards 我建议为图形 UI 元素实现一个类 该类有一个构造函数 init 定义所有必需的属性和所有必需的状态 ADr
  • 没有名为“PIL”的模块

    当我尝试时遇到错误 from PIL import Image ImageFilter 在 Python 文件中我收到一条错误消息ModuleNotFoundError No module named PIL 到目前为止 我已经尝试卸载 重
  • 使用 os.write 打印字体图标

    在 Windows 10 上使用 Python 3 8 3 我的终端 使用nerdfont https github com ryanoasis nerd fonts tree master patched fonts Agave有图标的
  • 如何使用 Plotly 中的直方图将所有离群值分入一个分箱?

    所以问题是 我可以在 Plotly 中绘制直方图 其中所有大于某个阈值的值都将被分组到一个箱中吗 所需的输出 但使用标准情节Histogram类我只能得到这个输出 import pandas as pd from plotly import
  • 对图像块进行多重处理

    我有一个函数必须循环遍历图像的各个像素并计算一些几何形状 此函数需要很长时间才能运行 在 24 兆像素图像上大约需要 5 小时 但似乎应该很容易在多个内核上并行运行 然而 我一生都找不到一个有据可查 解释充分的例子来使用 Multiproc

随机推荐

  • Pandas 重新索引数据框问题

    假设我有以下数据框 A B 0 1986 87 232131 1 1987 88 564564 2 1988 89 123125 等等 我正在尝试重新索引
  • 如何更改 heatmap.2 中的颜色键值?

    如上面的截图所示 我使用了该功能heatmap 2 here 我怎样才能改变 Value 在颜色编码栏中任何其他名称 人们可以只使用 gplots 包中的数据 library gplots data mtcars x lt as matri
  • 亚马逊的 AWS.NodeHttpClient - 没有文档:(

    我正在编写一个 lambda 函数 必须将日志写入 Amazon 的 ElasticSearch 服务 后端是Node js 我在 github 上发现了这个例子 https github com awslabs amazon elasti
  • 代码高尔夫:找到所有字谜

    一个词是一个anagram http en wikipedia org wiki Anagram如果该单词中的字母可以重新排列以形成不同的单词 Task 按字符数查找给定单词列表的所有字谜组的最短源代码 空格和换行符应计为字符 使用代码尺
  • grpc python 支持客户端和服务器上的多线程

    我想知道 grpc python 支持多线程吗 请分享一些参考 我已经在单线程中编写了代码 但不知道如何在多线程中编写 gRPC Python 在客户端和服务器上都支持多线程 至于服务器 您将创建带有线程池的服务器 因此默认是多线程的 对于
  • Rails 应用程序在 Heroku 上找不到 fontawesome 图标

    我安装了一个引导主题 一切在本地运行良好 但是 当我推送到 heroku 时 我的应用程序找不到字体 我预编译了资产并推送到heroku 但没有图标 因此 我在development rb中使用以下内容创建了像heroku这样的开发环境 c
  • 如何获取程序集 dll 的处理器架构? [复制]

    这个问题在这里已经有答案了 我可以通过在 C 中以编程方式加载 dll 来获取处理器架构吗 有没有一个类可以做到这一点 我需要了解 dll 是否是 x86 x64 MSIL 等 假设您只查看 net 程序集 您可以使用CorFlags ex
  • 如何查看 Fabric Composer 的日志

    我想查看 Fabric Composer 生成的运行时和客户端日志 但找不到它们 您能否提供有关如何访问日志的指导 运行时日志 如果你跑docker ps a您应该看到 3 个正在运行的 docker 容器 Docker 容器之一将是链码容
  • 如何将 rspec 与 before_validation 一起使用

    我无法理解如何正确使用 before validation 回调与 Rspec 模型 类别 rb class Category lt ActiveRecord Base validates presence of name permalin
  • CXF - com.ctc.wstx.exc.WstxUnexpectedCharException:非法字符((CTRL-CHAR,代码 5))

    我在互联网上发现问题是soap请求包含unicode char for ctrl v 这是Xml中的非法字符 我不知道它是如何进入String的 但我想简单地在服务器端删除它 有人可以告诉我如何解决这个问题吗 我找到了这个片段 XMLOut
  • Java 关闭连接和 findbugs

    在我们的代码中 我们通常使用以下模式 Connection conn try conn getConnection Do databasey stuff catch Exceptions that get thrown finally tr
  • 如何在内核模块代码中添加poll函数?

    据我所知 要从内核空间通知用户空间 一种方法是使用 poll 这意味着内核驱动程序应该首先提供 poll 方法 下面的代码是从网上找到的 确实有效 include
  • Codeigniter:下拉验证 set_rules

    我可以知道如何确保用户选择了 Dr Mr Ms Mdm 当他们提交表单时 如果称呼为空白 它将返回 set rules 的错误消息 Code echo p Salutation salutationOptions array gt Dr g
  • 全局变量sencha touch 2.1

    您好 我需要定义一个全局变量以在我的应用程序的任何位置使用 我声明了一个全局变量baseUrl in my app js 请看下面 应用程序 js
  • HTML5,div,隐藏,点击显示

    我有一个 div 末尾有一个按钮 我希望当有人按下该按钮时 另一个 div 前一个 div 下方 应该出现 其中包含我将其放入 div 内的内容 我正在使用以下代码 HTML div a href REGISTER a div br br
  • 具有两个或多个当前值的 Delphi 进度条

    我想在我的软件中制作一种多色条 一种进度条 但有两个当前值 这就是我需要它的原因 我有一些 预算部分 每个部分都有自己的限制 100 美元 1000 美元等 我还有一个用于添加新账单 并将账单链接到预算部分 的编辑表单 在这个编辑器中 我想
  • Hibernate 在 ManyToOne 关系中处理长 0 值而不是 NULL

    我使用 Hibernate 来访问旧数据库 对于某些表 不强制执行父子引用完整性 并且long对于子表中的某些 父 列 使用 0 值代替 NULL 以表示 无父 我仍然想使用这些关系 ManyToOne and OneToMany字段 但得
  • 无法通过 RIA 服务访问 EntityObject 类型

    我的实体框架模型是从 SQL Server 数据库生成的 由于我需要从 Silverlight 访问数据库 因此我根据 EF 模型为 RIAServices 生成了一个 DomainService Product是自动生成的之一Entity
  • 一次对多个属性使用“转换为自动属性”

    我发现自己经常使用 Resharper 的 转换为自动属性 重构来删除 C 3 0 之前的样板代码 有什么方法可以将其应用到单个类中的所有属性立刻 ReSharper 可以做到这一点 Options gt Code Cleanup gt U
  • Pygame:display.update() 在时钟延迟后才会更新

    我正在使用 pygametime Clock以较低的 FPS 运行我的游戏 我注意到我的输入似乎需要额外一帧才能生效 我做了一些调试 发现这不是问题pygame event get 而是与pygame display update 我编写了