python-3.x 为什么我的Pygame窗口后台加载不了?

gmxoilav  于 2023-01-18  发布在  Python
关注(0)|答案(1)|浏览(151)

每当我运行代码时,窗口打开正常,但背景图像不会加载。虽然图像不会立即加载,但如果我最小化窗口并再次打开它,图像加载正常。
这是我的代码:

import pygame
import os
pygame.init()

WIDTH, HEIGHT = 500, 365

WIN = pygame.display.set_mode((WIDTH, HEIGHT))

BG = pygame.transform.scale(pygame.image.load(os.path.join("GameMap3.png")).convert_alpha(), (WIDTH, HEIGHT))
PLAYER1 = pygame.image.load(os.path.join("PlayerType1.gif"))

fps = 60
main_font = pygame.font.SysFont("comicsans", 50)
player_vel = 5
clock = pygame.time.Clock()

def Main():
    global BG

    while True:

        WIN.blit(BG, (0,0))

        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                exit(0)

Main()
r6l8ljro

r6l8ljro1#

您未使用pygame.display.update()pygame.display.flip()更新显示

def Main():
    global BG

    while True:

        WIN.blit(BG, (0,0))

        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                exit(0)

        pygame.display.update() # <--- this is missing
 
Main()

典型的PyGame应用程序循环必须:

  • 使用pygame.event.pump()pygame.event.get()处理事件。
    • 根据输入事件和时间(分别为帧)更新游戏状态和对象的位置
  • 清除整个显示或绘制背景
  • 绘制整个场景(blit所有对象)
  • pygame.display.update()pygame.display.flip()更新显示
  • 使用pygame.time.Clock.tick限制每秒帧数以限制CPU使用

相关问题