首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在pygame中一次加载所有图像?

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

Stack Overflow用户
提问于 2021-04-18 01:59:09
回答 1查看 44关注 0票数 2

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

代码语言:javascript
复制
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')
EN

回答 1

Stack Overflow用户

发布于 2021-04-18 02:06:42

获取目录中所有文件的列表(参见os),并使用加载的文件创建字典:

代码语言:javascript
复制
import os
代码语言:javascript
复制
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()

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

代码语言:javascript
复制
screen.blit(images['background'], (0, 0))

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

代码语言:javascript
复制
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()
代码语言:javascript
复制
screen.blit(background, (0, 0))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67141356

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档