从YouTube教程获取的Python pygame程序仅偶尔正常运行该如何解决
问题修复说明
核心故障点
- 退出逻辑中
pygame.quit未加括号,仅引用了函数对象未实际执行,关闭窗口时pygame相关资源无法正常释放,多次运行后残留进程会占用接口/内存资源,触发程序未响应,首次运行无残留资源时就可以正常执行 - 代码中加载背景图的路径字符串使用了HTML转义字符
",实际运行时需替换为普通双引号 - 可选优化:图片加载后添加
convert()/convert_alpha()方法调用,可提升渲染效率,降低偶发卡顿概率
修复后完整代码
import pygame from sys import exit # crosshair class class Crosshair(pygame.sprite.Sprite): def __init__(self, picture_path): super().__init__() # 带透明通道的准星图用convert_alpha() self.image = pygame.image.load(picture_path).convert_alpha() self.rect = self.image.get_rect() def update(self): self.rect.center = pygame.mouse.get_pos() # general setup pygame.init() clock = pygame.time.Clock() # create the screen screen = pygame.display.set_mode((800,400)) pygame.display.set_caption('Runner') # 替换转义字符为普通双引号,普通背景图用convert() background = pygame.image.load("sprites/graphics/bg.png").convert() background = pygame.transform.scale(background, (800, 400)) pygame.mouse.set_visible(False) #crosshair crosshair = Crosshair('sprites/graphics/crosshair.png') crosshair_group = pygame.sprite.Group() crosshair_group.add(crosshair) # while loop while True: for event in pygame.event.get(): if event.type == pygame.QUIT: # 给pygame.quit加括号执行 pygame.quit() exit() screen.blit(background,(0,0)) crosshair_group.draw(screen) crosshair_group.update() clock.tick(60) pygame.display.update()
内容的提问来源于stack exchange,提问作者greg max
相关产品推荐
相关产品推荐

