问题描述
我有一个云类,我有各种各样的云形状,所以我需要将每个变化与其对应的阴影相关联,以便在其下方显示。
但我尝试创建一个字典,以云的图像作为键,它们的阴影作为值,我还创建了将云和阴影分别放在一个单独的列表中,然后使用 for
循环对它们进行迭代并将它们联系起来,但这些都不起作用。
我遇到了一个错误,显示 TypeError: 'pygame.Surface' object is not iterable
class Cloud(object):
def __init__(self:
imgs = random.choice([pygame.image.load(r'C:\Users\Salem\Documents\MyGame1\testcloud1.png').convert_alpha(),pygame.image.load(r'C:\Users\Salem\Documents\MyGame1\testcloud2.png').convert_alpha(),pygame.image.load(r'C:\Users\Salem\Documents\MyGame1\testcloud3.png').convert_alpha()])
shadows = [pygame.image.load(r'C:\Users\Salem\Documents\MyGame1\cloud_shadow.png').convert_alpha(),pygame.image.load(r'C:\Users\Salem\Documents\MyGame1\testcloud2shadow.png').convert_alpha(),pygame.image.load(r'C:\Users\Salem\Documents\MyGame1\testcloud3shadow.png').convert_alpha()]
self.x = random.randrange(-1500,-500)
self.y = random.randrange(-100,400)
for img in imgs:
for shadow in shadows:
i = random.randrange(len(imgs))
self.img = random.choice(self.imgs[i])
self.shadow = self.shadow[i]
那我该怎么办?
注意:
我只需要将云的图像与其阴影相关联,但我知道如何显示每个对象及其对应的阴影。
顺便说一句,别管我乱七八糟的文件名^^
提前致谢!
解决方法
创建云列表和阴影列表:
imgs = [pygame.image.load(r'C:\Users\Salem\Documents\MyGame1\testcloud1.png').convert_alpha(),pygame.image.load(r'C:\Users\Salem\Documents\MyGame1\testcloud2.png').convert_alpha(),pygame.image.load(r'C:\Users\Salem\Documents\MyGame1\testcloud3.png').convert_alpha()]
shadows = [pygame.image.load(r'C:\Users\Salem\Documents\MyGame1\cloud_shadow.png').convert_alpha(),pygame.image.load(r'C:\Users\Salem\Documents\MyGame1\testcloud2shadow.png').convert_alpha(),pygame.image.load(r'C:\Users\Salem\Documents\MyGame1\testcloud3shadow.png').convert_alpha()]
zip
列表并选择一个随机元素:
self.img,self.shadow = random.choice(list(zip(imgs,shadows)))
zip
接受两个集合并将它们合并为一个集合,其中每个项目都是每个集合中一个项目的元组。