无法在pygame中使用blit显示图像

问题描述 投票:1回答:1

我有以下代码,我尝试使用.blit加载两个图像:

import pygame

pygame.init()

width = 1600
height = 900
screen = pygame.display.set_mode((width, height))

attackImg = pygame.image.load('attack.png')
healImg = pygame.image.load('heal.png')
manaImg = pygame.image.load('mana.png')
moveImg = pygame.image.load('move.png')
shieldImg = pygame.image.load('shield.png')
stunImg = pygame.image.load('stun.png')


while True:
  screen.fill((255, 255, 255))
  screen.blit(healImg, (100, 800))
  screen.blit(attackImg, (200, 800))
  pygame.display.update()

运行代码时没有收到任何错误消息,但是图像没有显示。图像文件可用,并且已使用其正确的名称。我已经阅读了几本教程,但看不到我做错了什么。如果有任何区别,将编写代码并在repl.it中运行。请帮助我了解为什么没有显示图像以及需要更改的内容。

python pygame
1个回答
0
投票

我复制粘贴了您的代码,首先,该窗口没有显示。您的代码中没有“事件循环”。您几乎总是必须这样做,否则该窗口将不会启动。您可能通常也想制作一个running = True变量。否则,您的程序可能无法正常关闭。这是正确的代码:

import pygame

pygame.init()

width = 1600
height = 900
screen = pygame.display.set_mode((width, height))

attackImg = pygame.image.load('attack.png')
healImg = pygame.image.load('heal.png')

running = True
while running:
  screen.fill((255, 255, 255))
  for event in pygame.event.get(): # <--- 'event loop'
    if event.type == pygame.QUIT:
        running = False
  screen.blit(healImg, (100, 800))
  screen.blit(attackImg, (200, 800))
  pygame.display.update()

如果不起作用,可能只是图像相互覆盖或在视图外部被“遮盖”。在这种情况下,请写评论。

© www.soinside.com 2019 - 2024. All rights reserved.