You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 03:41:28