pygame window 运行 上什么都没显示

pygame window showing nothing on run

我正在尝试使用 pygame 制作游戏,但是每当我 运行 我的游戏时,在我关闭 window 之前什么都没有显示,然后东西会出现一秒钟。我不知道发生了什么,但我认为这与我的 display.update 有关。这是我的代码:

import pygame
import colorama
import math
import random #All needed libraries
import time
import os

from colorama import init, Fore, Back, Style #All needed extras
from pygame.locals import (
  K_UP,
  K_DOWN,
  K_LEFT,
  K_RIGHT,
  K_ESCAPE,
  KEYDOWN,
  QUIT,
)

init()
pygame.init()

SCREEN_WIDTH = 400
SCREEN_HEIGHT = 400

screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))

running = True

while running:
    for event in pygame.event.get():
        if event.type == KEYDOWN:
            if event.key == K_ESCAPE:
                running = False
        elif event.type == QUIT:
            running = False

screen.fill((255, 255, 255))

surf = pygame.Surface((50, 50))

surf.fill((0, 0, 0))
rect = surf.get_rect()

screen.blit(surf, (SCREEN_WIDTH/2, SCREEN_HEIGHT/2))

rect.update()
pygame.display.update()

为什么它不起作用?

这是Indentation的事情。场景必须在应用程序循环中而不是在应用程序循环之后绘制。
此外 pygame.Rect.update 没有按照您的预期进行。它用于改变矩形。你根本不需要它。

while running:
    for event in pygame.event.get():
        if event.type == KEYDOWN:
            if event.key == K_ESCAPE:
                running = False
        elif event.type == QUIT:
            running = False

# INDENTATION
#-->|

    screen.fill((255, 255, 255))

    surf = pygame.Surface((50, 50))

    surf.fill((0, 0, 0))
    rect = surf.get_rect()

    screen.blit(surf, (SCREEN_WIDTH/2, SCREEN_HEIGHT/2))

    #rect.update()                <--- DELETE
    pygame.display.update()