You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使这段Pygame代码在松开X键后仍持续执行?

解决Pygame按住按键持续执行代码的问题

你当前的代码思路是对的——用pygame.key.get_pressed()检测按键是否被按住,但要让这段逻辑持续生效,核心是把它放到Pygame的主循环里,让程序每帧都检查一次按键状态。

正确实现方式

把按键检测代码放到主循环的每一轮迭代中,只要X键按住,每帧都会执行if块内的代码:

import pygame
pygame.init()

# 初始化窗口、游戏对象(以下是示例框架,你需要替换成自己的对象定义)
screen = pygame.display.set_mode((800, 600))
bg = pygame.Surface((800, 600))
bg.fill((0, 0, 0))
player = ...  # 你的player对象
kivotos = ...  # 你的kivotos对象
obusutakuru = ...  # 你的obusutakuru对象

# 主游戏循环
running = True
while running:
    # 处理退出事件(必须保留,否则窗口无法正常关闭)
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    # 每帧都检测按键状态
    key = pygame.key.get_pressed()
    if key[pygame.K_x]:
        screen.blit(bg, (0, 0))
        player.update()
        kivotos.draw()
        obusutakuru.update()
    
    # 更新屏幕显示(必须保留,否则画面不会刷新)
    pygame.display.flip()

pygame.quit()

关键说明

  • pygame.key.get_pressed()返回的是当前所有按键的状态数组,只有每帧调用一次,才能实时获取按键是否处于按住状态。
  • 主循环是Pygame程序的核心,程序会不断重复循环内的代码,把按键检测逻辑放进去,就能实现按住按键时持续执行目标代码的效果。

误区提醒

如果用pygame.KEYDOWN事件检测按键,它只会在按键第一次按下时触发一次;而get_pressed()是持续检测按键的按住状态,这正是你需要的逻辑。

内容的提问来源于stack exchange,提问作者Yuurei

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 03:16:06