Pygame绘制精灵组land成员时仅显示gegend[0]图像问题求解
问题根因
所有Landschaft类的实例初始化时都固定使用了gegend[0]作为图像,因此创建的所有精灵都会显示列表第一张图。
修复方案
给Landschaft类的初始化方法增加动态传参逻辑,给每个精灵分配不同的图像即可,以下是修改后的可运行代码:
class Landschaft(pygame.sprite.Sprite): # 新增参数接收对应图像 def __init__(self, image): pygame.sprite.Sprite.__init__(self) self.image = image self.rect = self.image.get_rect() self.rect.x = random.randrange(40, breite -20) self.rect.y = random.randrange(100, hoehe - 200) gegend = [] for i in range(10): img = pygame.image.load(f"Bilder/ballons/ballon{i}.png") img = pygame.transform.scale(img,(175,175)) gegend.append(img) land = pygame.sprite.Group() while len(land) < 3: # 随机从gegend列表选取一张图像传入新精灵 random_img = random.choice(gegend) m = Landschaft(random_img) land.add(m) land.draw(screen)
如果你需要按索引指定图像,也可以修改初始化方法接收索引值:
class Landschaft(pygame.sprite.Sprite): def __init__(self, img_index): pygame.sprite.Sprite.__init__(self) self.image = gegend[img_index] self.rect = self.image.get_rect() self.rect.x = random.randrange(40, breite -20) self.rect.y = random.randrange(100, hoehe - 200) # 创建实例时传入随机索引即可 m = Landschaft(random.randint(0, len(gegend)-1))
如果需要避免多个精灵重复使用同一张图,提前打乱gegend列表后按顺序取元素即可。
内容的提问来源于stack exchange,提问作者Joachim
相关产品推荐
相关产品推荐

