【问题标题】:Pygame .blit() not working in class, or in game loopPygame .blit() 在课堂或游戏循环中不起作用
【发布时间】:2022-11-04 19:38:53
【问题描述】:

我正在关注一个 pygame 教程,测试了播放器 blit 是否正常工作,但它没有,检查了问题但我找不到任何问题,然后我直接在游戏循环中测试了 .blit() 并且没有工作所以我现在已经被难住了。

下面的播放器类,“Player_Down”应该是无关紧要的,因为它只是一个图像

class Player():
    def __init__(self, x, y):
        direction = "down"
        self.image = player_down
        self.rect = self.image.get_rect()
        self.rect.center = (x, y)
    def draw(self):
        screen.blit(self.image, self.rect)


ply = Player(SCREEN_WIDTH // 2 , SCREEN_HEIGHT - 150)

调用绘制函数的游戏循环

running = True
while running:
    screen.fill((83,90,83))
    ply.draw()
    
    #event handler
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            print("Game quit via X button")
            running = False
    pygame.display.update()

【问题讨论】:

  • 我无法重现该问题。问题中的代码没有问题。请阅读How to create a Minimal, Reproducible Example
  • 这是我能做的最好的事情,因为我没有发现代码有问题,而在问题出现之前我唯一修改的是类和 while 循环以添加 ply.draw()
  • 所以我帮不了你。我复制了您的代码并在一个简单的示例中进行了尝试。它工作得很好。
  • 似乎正在调用绘图函数,但 blit 不起作用
  • 不,情况似乎并非如此。一切都很完美。您正在错误的地方寻找错误。

标签: python python-3.x pygame


【解决方案1】:

问题中的代码没有问题。代码工作正常。请参阅最小且有效的示例:

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

player_down = pygame.Surface((30, 30))
player_down.fill((255, 0, 0))

class Player():
    def __init__(self, x, y):
        direction = "down"
        self.image = player_down
        self.rect = self.image.get_rect()
        self.rect.center = (x, y)
    def draw(self):
        screen.blit(self.image, self.rect)


ply = Player(SCREEN_WIDTH // 2 , SCREEN_HEIGHT - 150)

running = True
while running:
    screen.fill((83,90,83))
    ply.draw()
    
    #event handler
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            print("Game quit via X button")
            running = False
    pygame.display.update()

pygame.quit()
exit()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-25
    • 1970-01-01
    • 2013-08-03
    • 1970-01-01
    • 2016-11-15
    相关资源
    最近更新 更多