运行Pygame程序时窗口打开后立即关闭,代码存在什么问题该如何修复?
问题诊断
- 核心崩溃原因:代码中直接使用
K_RIGHT、K_LEFT常量,没有加pygame.前缀,运行时会触发NameError导致程序直接终止,这就是窗口打开后立刻关闭的原因。这两个按键常量属于pygame模块的内置常量,必须指定模块命名空间才能调用。 - 功能缺陷:主循环中仅定义了
x_change位移变量,没有添加x += x_change的坐标更新逻辑,修复崩溃问题后按左右键方块也不会移动。 - 体验优化点:每次绘制新方块前没有重绘背景,方块移动时会产生连续的白色拖影。
修复后的完整代码
import pygame import random pygame.init() x=480 y=680 tick=pygame.time.Clock() x_change=0 red=(0,0,255) green=(0,255,0) white=(255,255,255) graphic=pygame.display.set_mode((700,700)) noexit=True while noexit: # 重绘背景消除拖影 graphic.fill(green) pygame.draw.rect(graphic,white,(x,y,20,20)) pygame.display.flip() for event in pygame.event.get(): if event.type==pygame.QUIT: noexit=False elif event.type==pygame.KEYDOWN: # 补充pygame命名空间前缀 if event.key==pygame.K_RIGHT: x_change=2 elif event.key==pygame.K_LEFT: x_change=-2 elif event.type==pygame.KEYUP: if event.key==pygame.K_RIGHT or event.key==pygame.K_LEFT: x_change=0 # 增加x坐标更新逻辑 x += x_change tick.tick(60) pygame.quit() quit()
内容的提问来源于stack exchange,提问作者Supergamer
相关产品推荐
相关产品推荐

