Pygame按键检测循环问题:如何避免重复打印'false'
解决按键错误重复打印的问题
你的代码问题出在:Pygame的主循环(或外层循环)会高频执行这段逻辑,每次循环只要没检测到正确的K_DOWN按键,就会打印一次false,导致重复输出。要实现错误时仅打印一次,需要加一个状态变量控制打印时机。
修改方案
新增一个标记变量,记录是否已经打印过错误提示,仅在首次错误时打印,正确按键后重置标记:
i = 0 # 初始化错误打印标记,默认未打印错误提示 has_printed_false = False # 注意:原代码变量名list是Python内置类型,改成current_step避免冲突 for current_step in range(0, 594, 6): if i == current_step: # 遍历Pygame事件队列(原代码缺失这部分,否则event变量来源不合法) for event in pygame.event.get(): if event.type == pygame.KEYDOWN: if event.key == pygame.K_DOWN: i += 1 print('true') # 正确按键后重置标记,确保下一轮错误能触发提示 has_printed_false = False else: # 仅在未打印过错误时输出提示 if not has_printed_false: print('false') has_printed_false = True # 处理窗口关闭事件,避免程序卡死 elif event.type == pygame.QUIT: pygame.quit() exit()
关键调整点
- 把变量名
list改为current_step,避免覆盖Python内置的list类型 - 新增
has_printed_false标记,控制错误提示仅在首次错误时打印 - 正确按下
K_DOWN后重置标记,保证下一轮错误输入能正常触发提示 - 补充Pygame事件遍历逻辑,这是Pygame处理输入事件的标准写法
内容的提问来源于stack exchange,提问作者Tam Xin YI
相关产品推荐
相关产品推荐

