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

Pygame开发平台游戏时天空图片无法显示问题求助

问题解决:Pygame图片不显示、黑屏问题

核心错误:缩进逻辑错误

你的代码里pygame.display.update()和self.clock.tick(60)写在了while True循环的外部,导致游戏循环无法执行画面更新和帧率控制,最终呈现黑屏。

修复后的完整代码

import sys
import pygame

class Game:
    def __init__(self):
       pygame.init()

       pygame.display.set_caption('Shadow samurai')
       self.screen = pygame.display.set_mode((1200,800))

       self.clock = pygame.time.Clock()
       
       # 新增异常捕获,快速排查图片路径/加载问题
       try:
           self.img = pygame.image.load('assets/sky.png').convert()  # 加convert()提升渲染效率
       except pygame.error as e:
           print(f"图片加载失败: {e}")
           sys.exit()

       self.img_pos = (160, 260)
       self.movement = [False, False]

    def run(self):
         while True:
            # 先填充背景色,避免画面残留残影
            self.screen.fill((0, 0, 0))
            self.screen.blit(self.img, self.img_pos)

            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    pygame.quit()
                    sys.exit()
                if event.type == pygame.KEYDOWN:
                    if event.key == pygame.K_UP:
                        self.movement[0] = True
                    if event.key == pygame.K_DOWN:
                        self.movement[1] = True
                # 补充KEYUP事件,解决按键持续触发的问题
                if event.type == pygame.KEYUP:
                    if event.key == pygame.K_UP:
                        self.movement[0] = False
                    if event.key == pygame.K_DOWN:
                        self.movement[1] = False
           
            # 根据移动状态更新图片位置
            if self.movement[0]:
                self.img_pos = (self.img_pos[0], self.img_pos[1] - 5)
            if self.movement[1]:
                self.img_pos = (self.img_pos[0], self.img_pos[1] + 5)

            # 这两行必须放在循环内部,确保每帧都更新画面
            pygame.display.update()
            self.clock.tick(60)

Game().run()

额外优化说明

  • 给图片加载添加convert()方法,让Pygame转换图片为适配渲染的格式,提升运行性能。
  • 异常捕获能快速定位路径错误(比如assets文件夹是否存在、图片名称拼写是否正确)。
  • 补充KEYUP事件处理,避免按下方向键后图片持续移动的问题。
  • 每帧先填充背景色,防止图片移动后留下残影。

内容的提问来源于stack exchange,提问作者未来の天才侍Tensai

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 18:31:01