Pygame 按键/按键

2023-11-30

我正在为学校的计算机俱乐部制作一个小马里奥。 (好吧,作为团队的一部分。) 无论如何,我在使用“keyup/keydown”命令时遇到了一些麻烦。这是我的代码:

# 1 - Import library
import pygame
from pygame.locals import *

# 2 - Initialize the game
pygame.init()
width, height = 1280, 1000
screen=pygame.display.set_mode((width, height))
keys = [False, False, False, False]
playerpos=[100,100]

# 3 - Load images
player = pygame.image.load("images/totallynotgodzilla.png")
# 3.1 - Load Audio
music = pygame.mixer.Sound("audio/skyrim.wav")

# 4 - keep looping through
while 1:
    # 5 - clear the screen before drawing it again
    screen.fill(0)
    # 6 - draw the screen elements
    screen.blit(player, playerpos)
    # 7 - update the screen
    pygame.display.flip()
    # 8 - loop through the events
    for event in pygame.event.get():
        if event.type == pygame.KEYDOWN:
            if event.key==K_w:
                keys[0]=True
            elif event.key==K_a:
                keys[1]=True
            elif event.key==K_s:
                keys[2]=True
            elif event.key==K_d:
                keys[3]=True
        if event.type == pygame.KEYUP:
            if event.key==pygame.K_w:
                keys[0]=False
            elif event.key==pygame.K_a:
                keys[1]=False
            elif event.key==pygame.K_s:
                keys[2]=False
            elif event.key==pygame.K_d:
                keys[3]=False

        # 9 - Move player
        if keys[0]:
            playerpos[1]-=5
        elif keys[2]:
            playerpos[1]+=5
        if keys[1]:
            playerpos[0]-=5
        elif keys[3]:
            playerpos[0]+=5

基本上,问题是当我按下某个键时,它会等待 keyup 命令发生,然后再再次移动。所以基本上我必须快速按下按钮才能移动。

我删除了一些代码,所以如果缺少某些内容,请告诉我,我会告诉你我是否有它。


缩进问题。您需要在主游戏循环中而不是在事件循环中测试关键状态。您需要取消缩进您的键状态测试一级。

while 1:
    # do init stuff 
    screen.fill(0)
    # .... (all main loop init stuff here)

    for event in pygame.event.get():
        # test events, set key states
        if event.type == pygame.KEYDOWN:
            if event.key==K_w:
                keys[0]=True
        # .... (all event stuff)

    # Indent moves back to main game loop
    # test key states here...
    if keys[0]:
        playerpos[1]-=5
    elif keys[2]:
        playerpos[1]+=5
    # .... (and so on)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Pygame 按键/按键 的相关文章

  • 使用 python 制作本地服务器应用程序的最佳方法

    我想要简单轻松地集成 python 和 vba 人们 如果他们在阅读本文后亲自见到我 阅读本文可能会杀了我 但我正在使用 django 开发服务器来实现此目的 有没有什么简单又好的方法 仅举个例子 我想使用 python 模块 openpy
  • 将 pandas 数据框中的列减去其第一个值

    我需要将 pandas 数据帧的一列中的所有元素减去其第一个值 在这段代码中 pandas 抱怨 self inferred type 我猜这是循环引用 df Time df Time df Time 0 在这段代码中 pandas 抱怨为
  • python 可以检测它运行在哪个操作系统下吗?

    python 可以检测操作系统 然后为文件系统构建 if else 语句吗 我需要将 Fn 字符串中的 C CobaltRCX 替换为 FileSys 字符串 import os path csv from time import strf
  • Matplotlib 标准化颜色条 (Python)

    我正在尝试使用 matplotlib 当然还有 numpy 绘制轮廓图 它有效 它绘制了它应该绘制的内容 但不幸的是我无法设置颜色条范围 问题是我有很多图 并且需要所有图都具有相同的颜色条 相同的最小值和最大值 相同的颜色 我复制并粘贴了在
  • 如何使用pycaffe重构caffe网络

    我想要的是 加载网络后 我将分解一些特定的图层并保存新的网络 例如 原网 数据 gt conv1 gt conv2 gt fc1 gt fc2 gt softmax New net 数据 gt conv1 1 gt conv1 2 gt c
  • 用 Python 编写一个无操作或虚拟类

    假设我有这样的代码 foo fooFactory create 由于种种原因 fooFactory create 可能无法创建实例Foo 如果可以的话我想要fooFactory create 返回一个虚拟 无操作对象 这个对象应该是完全惰性
  • 使用 genfromtxt 导入 numpy 中缺失值的 csv 数据

    我有一个 csv 文件 看起来像这样 实际文件有更多的列和行 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 假设文件的名称是info csv如果我尝试使用导入它 data numpy genfromtxt i
  • Pandas:根据列名进行列的成对乘法

    我有以下数据框 gt gt gt df pd DataFrame ap1 X 1 2 3 4 as1 X 1 2 3 4 ap2 X 2 2 2 2 as2 X 3 3 3 3 gt gt gt df ap1 X as1 X ap2 X a
  • 使用Python将图像转换为十六进制格式

    我的下面有一个jpg文件tmp folder upload path tmp resized test jpg 我一直在使用下面的代码 Method 1 with open upload path rb as image file enco
  • 在 Windows 上使用 IPython 笔记本时出现 500 服务器错误

    我刚刚在 Windows 7 Professional 64 位上全新安装了 IPython 笔记本 我采取的步骤是 从以下位置安装 Python 3 4 1http python org http python org gt pip in
  • Python int 太大,无法放入 SQLite

    我收到错误 OverflowError Python int 太大 无法转换为 SQLite INTEGER 来自以下代码块 该文件约25GB 因此必须分部分读取 length 6128765 Works on partitions of
  • 在 pip.conf 中指定多个可信主机

    这是我尝试在我的中设置的 etc pip conf global trusted host pypi org files pythonhosted org 但是 它无法正常工作 参考 https pip pypa io en stable
  • ValueError:无法插入 ID,已存在

    我有这个数据 ID TIME 1 2 1 4 1 2 2 3 我想按以下方式对数据进行分组ID并计算每组的平均时间和规模 ID MEAN TIME COUNT 1 2 67 3 2 3 00 1 如果我运行此代码 则会收到错误 ValueE
  • 在pycharm中调试python代码

    这个问题类似于this https stackoverflow com questions 10240018 how to use pycharm to debug python script一 我正在尝试调试pyethapp https
  • 使用 lambda 函数更改属性值

    我可以使用 lambda 函数循环遍历类对象列表并更改属性值 对于所有对象或满足特定条件的对象 吗 class Student object def init self name age self name name self age ag
  • asyncio - 多次等待协程(周期性任务)

    我正在尝试为异步事件循环创建定期任务 如下所示 但是我收到 RuntimeError 无法重用已等待的协程 异常 显然 asyncio 不允许等待相同的可等待函数 如中讨论的这个错误线程 https bugs python org issu
  • 从 dask 数据框中的日期时间序列获取年份和星期?

    如果我有一个 Pandas 数据框和一个日期时间类型的列 我可以按如下方式获取年份 df year df date dt year 对于 dask 数据框 这是行不通的 如果我先计算 像这样 df year df date compute
  • 将 Scikit-Learn OneHotEncoder 与 Pandas DataFrame 结合使用

    我正在尝试使用 Scikit Learn 的 OneHotEncoder 将 Pandas DataFrame 中包含字符串的列替换为 one hot 编码的等效项 我的下面的代码不起作用 from sklearn preprocessin
  • PyQt 中的线程和信号问题

    我在 PyQt 中的线程之间进行通信时遇到一些问题 我使用信号在两个线程 发送者和监听者 之间进行通信 发送者发送消息 期望被监听者接收 但是 没有收到任何消息 谁能建议可能出了什么问题 我确信这一定很简单 但我已经环顾了几个小时但没有发现
  • 使用 Keras 和 fit_generator 绘制 TensorBoard 分布和直方图

    我正在使用 Keras 使用 fit generator 函数训练 CNN 这似乎是一个已知问题 https github com fchollet keras issues 3358TensorBoard 在此设置中不显示直方图和分布 有

随机推荐

  • if else 语句中条件的顺序重要吗?

    在编码 bat Logic 2 loneSum 问题时 我输入了下面列出的第一个方法 除了一项测试外 它对所有测试都是正确的 它唯一失败的地方是所有变量都等于同一个整数 但是当我在网上查找解决方案时 我得到了下面列出的第二种方法 并且该方法
  • 在 Matlab 函数中存储循环值

    我正在 Matlab 中编写一个函数来模拟中风患者住院时间 我在存储输出值时遇到困难 这是我的功能 function losdf age strokeType dest function to mdetermine length of st
  • Direct2D:WM_RESIZE 开关案例中未处理的异常

    我正在创建一个简单的 Direct2D 应用程序 不幸的是它正在给予 未处理的异常 它发生的函数 void DemoApp OnResize UINT width UINT height if m pRenderTarget lt The
  • 将图像从驱动器添加到工作表

    我想创建一个保存在 G Drive 中的签名 png 文件 并将其粘贴到带有菜单项的单元格中 我已将图像设置为公共并尝试使用共享 URL 但这无法添加 IMAGE 或以编程方式执行此操作 我已经尝试了互联网上的各种代码 但迄今为止尚未成功
  • 将 iphone 应用程序转换为 iPad

    我刚刚在 iPhone 上完成了一款应用程序 现在我想为 iPhone 和 iPad 创建相同的应用程序 我是 iPhone 新手 所以不知道该怎么做 1 创建新项目并选择Universal选项 然后复制粘贴所有代码 2 为两者修改此应用程
  • 使用 iterator 和 iterator.remove() 时出现 ConcurrentModificationException

    private int checkLevel String bigWord Collection
  • 如何从模型存储 EXTJ 读取额外属性?

    store中的Json reader定义如下 Ext define App store MyList extend Ext data Store model App model MyList pageSize 100 proxy type
  • 编译器错误:未定义用户定义类型

    我在这一行收到编译时错误 用户定义的类型未定义 Dim cn As ADODB Connection 可能出什么问题了 Code Sub test Dim cn As ADODB Connection Not the best way to
  • 如何在Java中正确处理定时器?

    我希望我的计时器只执行一次 actionPerformed 方法一次 每次 5 秒 但它在控制台中写入 Hello 很多次 import java awt event ActionEvent import java awt event Ac
  • MySQL选择匹配字符串的最大长度

    我需要返回共享搜索字符串共有的最大长度左界子字符串的所有文本结果 如果有 假设在包含以下内容的表列中搜索 StackOverflow Stack Sta StackOv StackOverthrow StackOverSlow StackF
  • SiriKit 对一般服务的支持

    我在 wwdc 上看过 SiriKit 并阅读了文档 https developer apple com library prerelease content documentation Intents Conceptual SiriInt
  • 如何冻结表格的标题和左列

    我想修复表格的标题和左侧 3 列 但我只找到了一种合适的解决方案 这是链接 http hazaa com au blog how to create an html table with frozen headers and columns
  • 是否可以使用 linq 运行查询来搜索一段时间?

    问题详情 SQL Server 2005 实体框架 4 0 我正在尝试使用 linq 仅运行一段时间的查询 示例 我有以下内容datetime我的服务器中的数据 30 03 2012 12 53 22 30 03 2012 17 23 29
  • 我可以使用表单仅发布 json 字符串(不带“name=”)吗?

    我正在尝试将 json 数据发布到我无法控制的 URL API文档说只接受json数据 我在想是否可以使用html表单来简化它 这里有很多关于如何 使用表单发布 json 数据 的帖子 但没有一个适用于我的情况 问题是 据我所知 如果你使用
  • 控制器中的 MVC Core SelectList 下拉菜单错误“Microsoft.AspNetCore.Mvc.Rendering.SelectListItem”

    我想在 MVC 中创建一个 SelectList Dropdown 我更喜欢选择列表位于存储库中 而不是控制器中 如何调用存储库 甚至不引用模型中的字段名称 我唯一想参考的是存储库 我收到此 Microsoft AspNetCore Mvc
  • 表中每行的边框半径

    我有这样的表格 我想将样式应用到带有圆角的每一行 table tr td Month td td Savings td tr tr td January td td 100 td tr tr td February td td 80 td
  • 使用 PowerShell 将 Windows 用户添加到本地 SQL Server

    我想使用 PowerShell 将现有本地用户作为系统管理员添加到 SQL Server 经过一些研究 到目前为止我有以下脚本 Username JohnDoe System Reflection Assembly LoadWithPart
  • 如何重新定位 Chrome 开发者工具

    默认情况下 这些工具在 Chrome 窗口的底部打开 对于宽屏显示器来说 这是一个相当糟糕的选择 因为右侧有大量的空白空间 但没有太多的垂直空间可供使用 不幸的是 我找不到重新定位工具的方法 我想把它们放在一边 类似于萤火虫 与我想要的类似
  • CMake 无法确定目标的链接器语言:fileloader

    我知道已经有一些关于这个主题的线程 但是 在阅读其中许多线程后 我无法找到解决我的问题的方法 我正在开发文件加载器 解析器 并且是第一次使用 CMake 我的 CMakeList txt 文件用于导入 XML 解析器 xerces 当前如下
  • Pygame 按键/按键

    我正在为学校的计算机俱乐部制作一个小马里奥 好吧 作为团队的一部分 无论如何 我在使用 keyup keydown 命令时遇到了一些麻烦 这是我的代码 1 Import library import pygame from pygame l