如何在pygame中一次加载所有图像



我正在尝试一次加载所有这些图像。它们都在同一个目录中,所以有没有一种方法可以一次加载它们而不会重复?

bg = pygame.image.load('Desktop/Files/Dungeon Minigame/background.png')
f_zombie = pygame.image.load('Desktop/Files/Dungeon Minigame/f_zombie.png')
f_knight = pygame.image.load('Desktop/Files/Dungeon Minigame/f_knight.png')
b_knight = pygame.image.load('Desktop/Files/Dungeon Minigame/b_knight.png')
r_knight = pygame.image.load('Desktop/Files/Dungeon Minigame/r_knight.png')
heart = pygame.image.load('Desktop/Files/Dungeon Minigame/heart.png')
empty_heart = pygame.image.load('Desktop/Files/Dungeon Minigame/empty_heart.png')

获取目录中所有文件的列表(请参阅操作系统(,并用加载的文件创建一个字典:

import os
path = 'Desktop/Files/Dungeon Minigame/'
filenames = [f for f in os.listdir(path) if f.endswith('.png')]
images = {}
for name in filenames:
imagename = os.path.splitext(name)[0] 
images[imagename] = pygame.image.load(os.path.join(path, name)).convert_alpha()

您可以通过其名称访问字典中的图像:

screen.blit(images['background'], (0, 0))

或者,您可以使用globals():将变量添加到全局命名空间

path = 'Desktop/Files/Dungeon Minigame/'
filenames = [f for f in os.listdir(path) if f.endswith('.png')]
for name in filenames:
imagename = os.path.splitext(name)[0] 
globals()[imagename] =  pygame.image.load(os.path.join(path, name)).convert_alpha()
screen.blit(background, (0, 0))

最新更新