2014-03-13 59 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) 

好運殺死他們所有:)