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

pygame sprite执行更新时无法在屏幕持续移动问题求助

问题根源

你的代码逻辑结构错误,将精灵位移、画面绘制、屏幕刷新的代码写在了事件遍历循环内部。pygame.event.get()仅当有系统事件(如鼠标移动、键盘输入、窗口操作)产生时,才会返回非空的事件列表,此时for循环才会执行内部代码。没有事件触发时,这部分更新逻辑完全不会运行,所以会出现蜗牛仅在有操作时移动、平时静止的现象。

修正后代码
import pygame
from sys import exit
pygame.init()
screen = pygame.display.set_mode((800,400))
# 可选:添加帧率控制器
clock = pygame.time.Clock()

sky_surface = pygame.image.load("bg_desert.png")
snail_surface = pygame.image.load("snailWalk1.png")
snail_x_pos = 600

while True:
    # 第一步:遍历处理所有事件
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            exit()
    # 第二步:更新游戏状态
    snail_x_pos -=1
    # 第三步:绘制所有画面元素
    screen.blit(sky_surface,(0,0))
    screen.blit(snail_surface,(snail_x_pos,350))
    # 第四步:刷新屏幕
    pygame.display.update()
    # 可选:固定60帧运行,避免移动速度随设备性能波动
    clock.tick(60)
关键修改点
  • 将位置更新、绘制、刷新逻辑从事件遍历循环中移出,放在主循环层级,保证每帧都会执行
  • 可选添加帧率控制,固定游戏运行速度,避免不同设备上移动速度不一致的问题

内容的提问来源于stack exchange,提问作者DR_KIND

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 20:36:02