Python 如何在Pygame中将对象与其阴影关联?
我有一个云类,我有各种各样的云形状,所以我需要将每个变化与其对应的阴影相关联,以便在它下面显示它 但我尝试创建一个字典,将云的图像作为键,阴影作为值,我还创建了一个单独的列表,将云和阴影分别放在一个单独的列表中,然后使用Python 如何在Pygame中将对象与其阴影关联?,python,oop,pygame,surface,Python,Oop,Pygame,Surface,我有一个云类,我有各种各样的云形状,所以我需要将每个变化与其对应的阴影相关联,以便在它下面显示它 但我尝试创建一个字典,将云的图像作为键,阴影作为值,我还创建了一个单独的列表,将云和阴影分别放在一个单独的列表中,然后使用for循环对它们进行迭代并将它们关联起来,但这些都不起作用 我遇到了一个错误,上面写着TypeError:'pygame.Surface'对象不可移植 class Cloud(object): def __init__(self: imgs = rando
for
循环对它们进行迭代并将它们关联起来,但这些都不起作用
我遇到了一个错误,上面写着TypeError:'pygame.Surface'对象不可移植
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\u shadow.png')。convert\u 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.img,self.shadow=random.choice(列表(zip(imgs,shadows)))
获取两个集合并将它们合并到一个集合中,其中每个项都是每个集合中的一个项的元组。能否发布一些示例代码,以便我们知道您在做什么?@AdamConrad DoneIt看起来您正在选择加载的三个项的单个图像,这就是为什么它抱怨无法迭代的原因。另外,由于您是随机选择的,您如何知道所选图像的阴影?@AdamConrad,这两个列表的排序方式是,第一个列表中索引为1的对象对应第二个列表中索引为1的对象,依此类推。。此外,我还创建了cloud类的实例,以便每个实例都代表一个随机选择的云shape@Rabbid76我在这行中遇到了一个错误:
self.img,self.shadow=random.choice(zip(imgs,shadows))
,我意识到它应该是:self.img,self.shadow=random.choicel(list(zip(imgs,shadows)))
@developeer对不起,我的错:self.img,self.shadow=random.choice(list(zip(imgs,shadows)))