【问题标题】:Trouble with pygame renderingpygame渲染问题
【发布时间】:2020-12-10 15:50:11
【问题描述】:

我遇到了一个问题,pygame 只渲染一个黑屏,上面有一条奇怪的绿线。

我正在关注 RealPython.com 上的教程,第一次尝试一切顺利。一旦我做了第二次尝试,这就是渲染,这显然是错误的。

#sidescrolling air-shooter
import pygame
#import pygame locals
from pygame.locals import(
    K_UP,
    K_DOWN,
    K_LEFT,
    K_RIGHT,
    K_ESCAPE,
    KEYDOWN,
    QUIT,
)

#constants for screen width/height
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600
class Player(pygame.sprite.Sprite):
       def __init__(self):
        super(Player, self).__init__()
        self.surf = pygame.Surface((75,25))
        self.surf.fill((255, 255,255))
        self.rect = self.surf.get_rect()

pygame.init()
#create screen
screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))

# Instantiate player
player = Player()
#keep the game running!
running = True

#loop time!
while running:
    #look at all the events
    for event in pygame.event.get():
        #did the user hit a key?
        if event.type == KEYDOWN:
            #Was it escape?  uh oh we gotta stop
            if event.key == K_ESCAPE:
                running = False

        elif event.type ==QUIT:
            running = False

#fill screen with white
screen.fill((255, 255, 255))

# Create a surface and pass in a tuple containing legth and width
surf = pygame.Surface((50, 50))

# Give the surface a color to separate it from the Background
surf.fill((0, 0, 0))
rect = surf.get_rect()

#This line says "Draw surf onto the screen at the center"
screen.blit(surf, (SCREEN_WIDTH/2, SCREEN_HEIGHT/2))
#Draw the player on the screen
screen.blit(player.surf, (SCREEN_WIDTH/2, SCREEN_HEIGHT/2))
pygame.display.flip()
pygame.quit()

我什至检查了他们项目的源代码,它似乎匹配。

【问题讨论】:

    标签: python pygame


    【解决方案1】:

    这是Indentation 的问题。您需要在应用程序循环中绘制场景并更新显示in,而不是应用程序循环之后:

    #loop time!
    while running:
        #look at all the events
        for event in pygame.event.get():
            #did the user hit a key?
            if event.type == KEYDOWN:
                #Was it escape?  uh oh we gotta stop
                if event.key == K_ESCAPE:
                    running = False
    
            elif event.type ==QUIT:
                running = False
    
        #-->| INDENTATION
    
        #fill screen with white
        screen.fill((255, 255, 255))
    
        # Create a surface and pass in a tuple containing legth and width
        surf = pygame.Surface((50, 50))
    
        # Give the surface a color to separate it from the Background
        surf.fill((0, 0, 0))
        rect = surf.get_rect()
    
        #This line says "Draw surf onto the screen at the center"
        screen.blit(surf, (SCREEN_WIDTH/2, SCREEN_HEIGHT/2))
        #Draw the player on the screen
        screen.blit(player.surf, (SCREEN_WIDTH/2, SCREEN_HEIGHT/2))
        pygame.display.flip()
    
    pygame.quit()
    

    【讨论】:

      猜你喜欢
      • 2021-04-15
      • 1970-01-01
      • 1970-01-01
      • 2014-07-13
      • 2015-11-03
      • 1970-01-01
      • 2016-04-01
      • 2010-10-19
      • 2016-06-27
      相关资源
      最近更新 更多