【问题标题】:pygame window showing nothing on runpygame 窗口在运行时不显示任何内容
【发布时间】:2022-01-07 16:37:58
【问题描述】:

我正在尝试使用 pygame 制作游戏,但是每当我运行我的游戏时,在我关闭窗口之前什么都没有显示,然后会出现一秒钟的东西。我不知道发生了什么,但我认为这与我的 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()

为什么它不起作用?

【问题讨论】:

    标签: python pygame pygame-surface


    【解决方案1】:

    这是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()
    

    【讨论】:

    • 感谢您的帮助!
    • @kDev 谢谢。不客气。
    猜你喜欢
    • 2020-08-31
    • 2021-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-24
    • 2022-07-31
    相关资源
    最近更新 更多