2014-03-13 62 views
1

我是pygame的新手,我想知道下面是否可能。假设我有2个Sprite组,称为Sprites和Sprites1,每个Sprite组都有一组不同的不重叠的精灵。是否有可能做Sprites.add(Sprites1)?可以在pygame中的精灵组包含除正常精灵以外的包含精灵的子组?

+0

没有意思似乎无益,每当我看到一个问题开始时“是否有可能......?”我的答复是“你试过了吗?”。如果你已经尝试过了,并且你得到一个错误,那么这就产生了一个更具体的问题。就我个人而言,我认为试验,看看有什么和不工作是学习新东西的好方法。祝好运并玩得开心点。 – elParaguayo

+0

建议:避免将你的群组命名为“Sprites”或“Sprites1”。大写的第一个字母应该保留给* class *名称,而不是它们的*实例*。就像'敌人= pygame.sprites'一样。Group()','boss = pygame.sprites.Sprite()','enemies.add(boss)' – MestreLion

回答

0

亚历克斯的答案是正确的,但它依靠2个你可能没有意识到的微妙技巧,并且是值得的解释:

  • 雪碧群体迭代,如果你有一个名为enemies组,您可以轻松地遍历它包含的所有精灵:

    for enemy in enemies: enemy.health *= 2

漂亮方便吧?只是不要试图使用切片和索引:一组是而不是的一个列表!为此,使用group.sprites(),其中返回的列表(但仍然是方法,因此是强制括号)。

  • Group.add()的方法需要多个参数,每一个子画面。所以,你可以在一个单一的add添加多个精灵,如:

    world.add(boss, ninja, tree, player)

这很酷,但它变得更好:如果你有一个序列精灵或的(列表,元组等)生成精灵的迭代器/生成器,您可以使用*语法将元素扩展为多个参数。也很方便,不是吗? :)

这两个功能可以组合(它们被设计成),这会导致真棒语法亚历克斯使用:

world.add(*enemies) 

好运杀死他们所有:)