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 按键/按键 的相关文章

随机推荐

  • 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