path - 你如何在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')
解决方案
获取目录中所有文件的列表(参见os)并使用加载的文件创建字典:
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))
推荐阅读
- c# - 使用 EF context.Database.EnsureCreated 创建 SQLite 虚拟表?
- mongodb - 如何根据另一个字段的值生成具有排名值的字段(Mongoose 和 MongoDB)
- python-3.x - 类之间的Python Qt继承-AttributeError:类型对象'Ui_QMainWindow'没有属性
- swiftui - 如何在 SwiftUI 中的列表中添加多文本?(数据流)
- python-3.x - 如何将我的字典添加到漂亮表中
- python - Keras/TensorFlow GPU——停留在 Epoch 1
- hazelcast - 使用 PER_NODE 策略的 MaxSizeConfig 大小
- matplotlib - matplotlib bar3d 中的可视化错误
- three.js - Threejs围绕与标题垂直的球体旋转
- python - Tensorflow tf.switch_case 不适用于 keras 输入