python - 无法使用 blit 在 pygame 中显示图像
问题描述
我有以下代码,我尝试使用 .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 中编写和运行的。请帮助我了解为什么图像没有显示以及需要更改的内容。
解决方案
我复制粘贴了你的代码,首先,窗口没有出现。您的代码中没有“事件循环”。您几乎总是必须这样做,否则窗口将无法启动。您通常还可能想要创建一个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()
如果这不起作用,则可能只是图像相互覆盖,或者它们在视图之外被“blitted”。在这种情况下,写评论。
推荐阅读
- google-cloud-platform - 将二进制数据从 Google Cloud Storage 流式传输到 Cloud Function
- c# - 我如何知道 C# Unity 中 AndroidJavaObject 类中的方法
- excel - VBA:剪切一系列列并将其粘贴到前三列数据的底部
- electron - 无法使用 Electron Builder 将图标添加到 Electron 应用程序
- docker - 码头工人无法启动烧瓶应用程序
- sql - 获取重复集
- javascript - ajax 数据表导出按钮不起作用
- reactjs - 第 103:9 行:期望一个赋值或函数调用,而是看到一个表达式 no-unused-expressions
- c++ - 从 MSVC 32 位版本解码程序集(作业)。无操作是做什么的?
- c# - 运行 WPF 应用程序并在其中调用其他 wpf 应用程序