如何使这段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
相关产品推荐
相关产品推荐

