在字典中存储多个图像文件

2024-10-03 04:31:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我在python方面相对缺乏经验,当时正在为一个学校项目编写射击游戏。我试图消除一些保存图像的变量的重复:

wavetransition=pygame.image.load("TransitionScreen.png")
wavetransition=pygame.transform.scale(wavetransition,(WIDTH,HEIGHT))
wavetransition2=pygame.image.load("TransitionScreen1.png")
wavetransition2=pygame.transform.scale(wavetransition2,(WIDTH,HEIGHT))
wavetransition3=pygame.image.load("TransitionScreen2.png")
wavetransition3=pygame.transform.scale(wavetransition3,(WIDTH,HEIGHT))
wavetransition4=pygame.image.load("TransitionScreen3.png")
wavetransition4=pygame.transform.scale(wavetransition4,(WIDTH,HEIGHT))
wavetransition5=pygame.image.load("TransitionScreen4.png")
wavetransition5=pygame.transform.scale(wavetransition5,(WIDTH,HEIGHT))

这些图像被用作游戏中不同级别之间的转换屏幕。然后将它们称为随机随机范围()变量:

^{pr2}$

有没有办法让这个看起来“短一点”?谢谢


Tags: 图像image游戏pngtransformloadwidthpygame
2条回答

使用列表和迭代:

# image paths
img_paths = ["TransitionScreen.png", "TransitionScreen1.png", ...]

wavetransitions = []
for img_path in img_paths:
    # loads, resizes and adds image to wavetransitions list
    img = pygame.image.load(img_path)
    img = pygame.transform.scale(img, (WIDTH, HEIGHT))
    wavetransitions.append(img)

# as rander2 is the index+1 of the image, you can simply do
screen2.blit(wavetransitions[rander2 - 1], (0, 0))

您可以将list用于图像,dict用于wavetransitions

import re
import random

images = ["TransitionScreen0.png",  # Note, added 0 to the filename
          "TransitionScreen1.png",
          "TransitionScreen2.png",
          "TransitionScreen3.png",
          "TransitionScreen4.png"]

wavetransitions = dict()

for image in images:
    m = re.search(r'(\d+)$', image.split('.')[0]).group(0)
    key = "wavetransition" + m  # m is the number that ends the name of image
    value = pygame.image.load(image)
    value = pygame.transform.scale(value, (WIDTH, HEIGHT))
    wavetransitions[key] = value

wavetransitions_keys = wavetransitions.keys()

screen2.blit(wavetransitions[random.choice(wavetransitions_keys)], (0, 0))

相关问题 更多 >