You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 02:06:08