如何使用 pygame.KEYDOWN 在按住按键的情况下每次循环执行某些操作?

2024-01-01

我创建了 2 个函数,用于检查事件

def get_pygame_events():
  pygame_events = pygame.event.get()
  return pygame_events

and

def get_keys_pressed(self):
  keys_pressed = get_pygame_events()  #pygame.event.get(pygame.KEYDOWN)
  # print(keys_pressed)
  keys_pressed_list = []
  for event in keys_pressed:
    if event.type == pygame.KEYDOWN:
      if event.key == K_LEFT:
        keys_pressed_list.append("left")
      if event.key == K_RIGHT:
        keys_pressed_list.append("right")
      if event.key == K_UP:
        keys_pressed_list.append("up")
      if event.key == K_DOWN:
        keys_pressed_list.append("down")
      if event.key == K_a:
        keys_pressed_list.append("a")
      if  event.key == K_d:
        keys_pressed_list.append("b")
      if event.key == K_w:
        keys_pressed_list.append("w")
      if event.key == K_s:
        keys_pressed_list.append("s")
      if event.key == K_SPACE:
        keys_pressed_list.append("space")
      if event.key == K_q:
        keys_pressed_list.append("q")
      if event.key == K_e:
        keys_pressed_list.append("e")
    if event.type == pygame.MOUSEBUTTONDOWN:
      keys_pressed_list.append("click")
      return (keys_pressed_list, event.pos)
  return keys_pressed_list

我期望如果我能做类似的事情:

while True:
  Variable1 = get_pygame_events()
  Variable2 = get_keys_pressed()
  if Variable2 == ["w"]:
    print("w")

(That while循环只是我所做的总结)

然后如果我按住W,“w”就会一遍又一遍地打印。相反,当我尝试时,它打印了一次 W,除非我再次按下,否则就会发生这种情况。

我怎样才能做到这一点,通过按住 W (或任何)键,它可以识别正在发生的事件,并且(在这种情况下)每次通过时都打印“w”while loop?


Use pygame.KEYDOWN and pygame.KEYUP检测某个键是否被物理按下或释放。您可以使用以下命令激活键盘重复pygame.key.set_repeat生成多个pygame.KEYDOWN按住某个键时会发生事件,但这并不是一个好主意。

相反,您可以使用pygame.key.get_pressed() http://pygame.org/docs/ref/key.html#pygame.key.get_pressed检查当前是否按住某个键:

while True:
    ...
    pressed = pygame.key.get_pressed()
    if pressed[pygame.K_w]:
       print("w is pressed")
    if pressed[pygame.K_s]:
       print("s is pressed")
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 pygame.KEYDOWN 在按住按键的情况下每次循环执行某些操作? 的相关文章

  • Python 中的空填字游戏求解器

    我得到了一个包含填字游戏蓝图的矩阵 当然 它是空的 我们的目标是填补整个难题 这是 Checkio 的一项任务 我已经为此奋斗了相当长一段时间 根据我对复杂性的理解 这个问题没有完美的算法 不过 必须有最好的方法来做到这一点 对吧 我尝试了
  • 如何使用Python从pdf文件中删除页面?

    我有一些超过 500 页的 pdf 文件 但每个文件中只需要几页 有必要保留文档的标题页 我确切地知道程序应该删除的页数 如何使用安装在 MS Visual Studio 上的 Python 2 7 环境来完成此操作 尝试使用PyPDF2
  • 加快 pandas groupby 中的滚动总和计算

    我想按组计算大量组的滚动总和 但我很难快速地完成它 Pandas 内置了滚动和展开计算器的方法 这是一个例子 import pandas as pd import numpy as np obs per g 20 g 10000 obs g
  • Pycharm 出现 Kivy 错误 [严重] [应用程序] 无法获取窗口,中止

    我正在尝试让示例 Kivy 代码之一在我的机器上运行 我使用的是 Pycharm 社区版 2017 1 安装了 anaconda python 2 7 和 Kivy 1 9 我已使用项目设置将 Kivy 模块和 Pygame 模块安装到项目
  • Flask / Werkzeug - 套接字卡在 CLOSE_WAIT 中

    我遇到过一种情况 API 构建于Flask 宁静 https github com flask restful flask restful间歇性变得无反应 目前它从 Werkzeug 运行 我知道它仅用于非生产用途 并且是单线程的 让事情变
  • Python 的贝叶斯垃圾邮件过滤库

    我正在寻找一个可以进行贝叶斯垃圾邮件过滤的 Python 库 我查看了 SpamBayes 和 OpenBayes 但两者似乎都没有维护 我可能是错的 谁能推荐一个好的 Python 或 Clojure Common Lisp 甚至 Rub
  • 我怎样才能用Python中的语音识别来检测一个单词

    我知道如何用 Python 检测语音 但这个问题更具体 如何让 Python 只监听一个单词 然后如果 Python 可以识别该单词则返回 True 我知道 我可以让 Python 一直监听 然后做出类似的东西 伪代码 while True
  • 到底什么是序列?

    蟒蛇docs https docs python org 3 glossary html term sequence有点模棱两可 sequence 一个可迭代对象 支持通过以下方式使用整数索引进行有效的元素访问 getitem 特殊方法并定
  • 允许 help() 对部分函数对象起作用

    我正在努力确保跑步help 在 Python 2 7 REPL 显示 doc 对于一个被包装的函数functools partial 目前正在运行help on a functools partial 功能 显示 doc of the fu
  • 动态组装 Python 模块,动态导入

    我正在努力让自己熟悉importlib钩子 我想实现直接导入用其他语言编写的非Python文件并维护源映射的能力 因此提高SyntaxError带有行号的 s 仍然会给出有意义的堆栈跟踪 我加载外部文件的方法是组装 Pythonic 源代码
  • 确定 TCP Listen() 队列中当前积压的连接数

    有没有办法找出currentLinux 上 TCP 套接字上等待 Accept 的连接尝试次数 我想我可以在每个事件循环上点击 EWOULDBLOCK 之前计算成功的 Accept 数量 但我使用的是隐藏这些细节的高级库 Python Tw
  • 使用 Python 访问 MP3 音乐数据

    我正在尝试编写一个 Python 脚本 用于使用歌曲的数据作为比较的基础来搜索重复的 mp3 4 文件 我的情况涉及许多文件名相似但 ID3 标签不同的 mp3 4 文件 起初 我尝试循环并使用 md5 来查找重复文件 忽略文件名 当然 当
  • 在 python 中以半小时为增量创建选择列表

    我正在尝试创建一个
  • PyCrypto:生成受 DES3 密码保护的 RSA 密钥

    我已经能够使用 DES3 创建受密码保护的 RSA 密钥 嗯 I think因为我对这个加密世界非常陌生 使用以下命令 openssl genrsa out tmp myKey pem passout pass f00bar des3 20
  • 包含文件中的块未被扩展模板填充

    我有一个如下所示的模板 include base top html with context include base nav html with context div Stuff block content endblock div i
  • 使用 Keras 时,验证集中未见的类别会出现错误

    我有由数值变量和分类变量组成的数据 分类变量有很多类别 因此我使用嵌入来表示这些类别 我的模型是一个简单的神经网络 我知道当你定义嵌入层时你需要通过input dim number of categories 1为了解释训练中看不见的类别
  • 带过滤器的 SQLAlchemy func.count

    我正在使用一个进行分页的框架 如下所示 def get count query self return self session query func count select from self model def paginate se
  • 打开 PDF 到书签/指定目标?

    我正在尝试使用 python 打开特定书签的 PDF 到目前为止 我可以在命令提示符中运行以下命令并得到我想要的 last是 PDF test pdf 中指定目的地的名称 C Program Files x86 Adobe Reader 1
  • Discord-py Rewrite - Cog 中的基本 aiohttp Web 服务器

    我正在尝试将基本的 aiohttp 网络服务器集成到 Cog 中 使用 discord py 重写 我对齿轮使用以下代码 from aiohttp import web import discord from discord ext imp
  • Django ALLOWED_HOSTS 与 CORS(django-cors-headers)

    ALLOWED HOSTS 和 CORS 之间有什么区别 如果我定义了 ALLOWED HOSTS 我还需要定义 CORS 吗 我没有使用 django 模板 我也有可能动态定义这两个吗 我认为没有 我使用 django 作为后端 并在不同

随机推荐

  • 带新行的 AlertDialog 消息。 (\n 不起作用。)

    我需要在AlertDialog在安卓上 我已经尝试过使用 n 字符 但它不起作用 我没有看到 n 字符 但文本不会换行 有什么帮助吗 您可以使用跨文本Html fromHtml some string br 在某些文本视图元素上创建新行
  • Android:如何为android活动制作翻转动画,就像iphone从左到右水平翻转一样?

    在我的应用程序中 我想翻转视图 我在iPhone上看过这样的动画 我想在我的 Android 应用程序中实现同样的功能 我想翻转整个活动视图 是否可以 我见过一些 android 中翻转的例子 但在所有示例中 视图都位于同一个活动中 是否可
  • 使用 jquery 禁用右键单击图像

    我想知道如何使用 jQuery 禁用右键单击图像 我只知道这个 这有效 img bind contextmenu function e return false 或者对于较新的 jQuery nearestStaticContainer o
  • Eclipse-导入代码格式设置

    您好 我正在使用 intellij 通过以下步骤添加代码设置 jar 导入设置 然后指向此 JAR 然后右键单击该模块并执行 重新格式化代码 但现在我在 eclipse 中使用相同的项目 如何在clipse和格式代码中使用上述设置jar 除
  • 如何使用robotium生成测试结果报告?

    我一直在使用 Robotium 来测试我的 Android 应用程序 测试成功 但我想知道是否有任何方法可以在单独的文件中查看测试结果 我很幸运 只是像常规 Android JUnit 测试一样运行 robotsium 测试 然后使用标准机
  • 如何设置activemq的队列最大长度

    我想知道是否可以在activemq上配置队列的最大长度 以便当队列的长度达到限制时 入队操作将失败或抛出异常 有人知道这个问题吗 任何帮助将不胜感激 多谢 看一下生产者流程控制http activemq apache org Produce
  • 如何查看 ASP.NET OutputCache 的内容?

    有什么方法可以列出当前存储在 OutputCache 中的页面吗 只需一个路径列表即可 但如果有一种方法可以获取有关每个项目的更多信息 过期等 那就更好了 据我记得缓存是一个单例 每个应用程序域只有一个实例 OutputCache 也使用它
  • MSTest 中 [TearDown] 和 [SetUp] 的替代方案是什么?

    当我使用 MSTest Framework 并复制 Selenium IDE 为我生成的代码时 MSTest 无法识别 TearDown and SetUp 有什么替代方案吗 你会使用 TestCleanup and TestInitial
  • 快速而肮脏的 SQL 字符串转义

    我正在对家庭卷进行最后的润色QueryBuilder具有 postgresql 数据库的 Web 应用程序的类 它用PreparedStatement适用于所有查询 并防止 SQL 注入 然而我想要一种 快速而肮脏 的方式来表示QueryB
  • Grunt JS 复制到网络位置

    我想使用 grunt contrib copy 或任何其他 grunt 复制插件 将文件复制到网络位置 尝试如下 copy test files src Scripts dest location site Scripts 但得到 警告 无
  • 将特殊字符传递给 mailto 正文会导致 JavaScript 崩溃

    我有一个 C ASP NET 应用程序 它为某些用户配置文件信息创建一个 JavaScript 值数组 在客户端 我使用 jQuery JavaScript 读取数组并生成 mailto 链接 某些字段可以包含特殊字符 例如 这是 C 代码
  • 使用值更改清单 screenOrientation

    我正在训练通过资源以恒定值更改清单中的 screenOrientation 这是我的清单的一项活动
  • Neo4J安装-启动服务失败

    我正在尝试安装 Neo4j 1 8 但在启动服务时遇到问题 解压 zip 文件后 我直接进入 bin 文件夹并执行批处理文件 Neo4J bat install SC 创建服务成功 SC 启动服务失败 1053 服务未及时响应启动或控制请求
  • UserPrincipal.GetAuthorizationGroups() 方法出错

    我在 Web 应用程序中使用 UserPrincipal 类的 GetAuthorizationGroups 方法时遇到问题 使用以下代码 我收到 尝试检索授权组时 发生错误 5 PrincipalContext context new P
  • Mockito 测试活动

    我有一个生成事件的类 例如 public class EventSource public addEventListener EventListener listener public raiseEvent Event e listener
  • 当元素已在视口中时触发 IntersectionObserver

    The IntersectionObserver当元素在视口中可见达到一定程度 0 100 时触发 这意味着 当元素是已经 100 在视口中它不再触发 因为阈值没有变化 我有一个高度为200vh我想要IntersectionObserver
  • 将 Apache Shiro 安全库与基于 Dropwizard 的 JAX-RS 应用程序集成

    我正在尝试改变 Dropwizard 以支持 Shiro 我已阅读文档并且有点困惑 我想将 Shiro 与表单登录身份验证和 Apache Shiro 注释结合使用 我认为我需要使用 Jersey Filters 来支持 Shiro 这是在
  • Matplotlib:多线图

    我的数据框如下所示 Bin A B C Proba a Proba b Proba c gamma CPB 0 100 20841 23195 24546 34 503457 27 103303 22 859837 0 100 0 200
  • gwt-dev-mac.jar 丢失?

    我正在尝试在 Mac OS X 上使用 IntelliJ IDEA 进行 GWT 开发 并检查了同事在 Windows 上创建的 subversion 项目 项目文件附带了 GWT 的路径 C 这显然不适合我 当我在 模块设置 对话框中更改
  • 如何使用 pygame.KEYDOWN 在按住按键的情况下每次循环执行某些操作?

    我创建了 2 个函数 用于检查事件 def get pygame events pygame events pygame event get return pygame events and def get keys pressed sel