如何在 Pygame 中将对象与其阴影相关联?
How to associate an object to its shadow in Pygame?
我有一朵云class,我有多种云形状,所以我需要将每个变化与其对应的阴影相关联,以便在其下方显示它。
但我尝试创建一个字典,其中云的图像作为键,它们的阴影作为值,我还创建了云和阴影分别在一个单独的列表中,然后使用 for
循环进行迭代在他们之上并将他们联系起来,但 none 的工作。
我遇到了一个错误 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
获取两个集合并将它们合并为一个集合,其中每个项目都是每个集合中的一个项目的元组。
我有一朵云class,我有多种云形状,所以我需要将每个变化与其对应的阴影相关联,以便在其下方显示它。
但我尝试创建一个字典,其中云的图像作为键,它们的阴影作为值,我还创建了云和阴影分别在一个单独的列表中,然后使用 for
循环进行迭代在他们之上并将他们联系起来,但 none 的工作。
我遇到了一个错误 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
获取两个集合并将它们合并为一个集合,其中每个项目都是每个集合中的一个项目的元组。