VS Code中运行Pygame代码出现严重卡顿问题求助
解决Pygame运行卡顿的问题
你的代码卡顿的核心原因是把游戏核心逻辑(移动、绘图、帧率控制)都放在了事件处理循环(for event in pygame.event.get())内部。只有当有事件(比如窗口点击、按键)触发时,这些逻辑才会执行,没有事件时程序就会暂停,导致帧率极不稳定,出现严重卡顿。
修复方法很简单,把事件处理以外的代码移到事件循环的外面,让它们在每一次主循环迭代中都执行:
修改后的代码:
import pygame, sys pygame.init() clock = pygame.time.Clock() screen_width = 900 screen_height = 600 screen = pygame.display.set_mode((screen_width,screen_height)) pygame.display.set_caption('Hungry Plant') bird = pygame.Rect(screen_width/2 - 15,screen_height/2 - 15,30,30) player = pygame.Rect(screen_width/2 - 25, screen_height/1.20,50,300) bg_color = pygame.Color('grey12') light_grey = (200,200,200) light_green = (144, 238, 144) bird_speed_x = 7 while True: # 仅处理事件 for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() # 游戏逻辑、绘图、帧率控制移至事件循环外 bird.x += bird_speed_x if bird.left <= 0 or bird.right >= screen_width: bird_speed_x *= -1 screen.fill(bg_color) pygame.draw.rect(screen,light_green, player) pygame.draw.ellipse(screen, light_grey, bird) pygame.display.flip() clock.tick(30)
关键修改点:
- 将
bird的移动逻辑、边界检测、屏幕填充、绘图、屏幕刷新以及帧率控制代码,从for event循环内移到了主while True循环中,确保每帧都会执行这些操作 - 事件循环仅保留退出事件的处理,专注于事件响应
这样修改后,程序会稳定以你设置的30帧速率运行,卡顿问题就能解决。
内容的提问来源于stack exchange,提问作者Julian
相关产品推荐
相关产品推荐

