2017-04-07 36 views
1

好吧,我在我的遊戲(玩家,老闆,levelGoal ...)中有某些東西只在一個實例中在任何給定時間存在,並且因此我想通過讓這些東西成爲手動聲明的精靈來簡化我的代碼 - 而不是先將它們存在爲需要實例化爲對象的類。Pygame 1.9.3:向組中添加精靈(沒有職業)

(很多人會說這是最好的組一切成類,無論如何,但我是否不同意這一點 - it'd肯定會知道,以防萬一解決的辦法有用)

我會就像爲了檢測命中(並在屏幕上繪製)的目的而將這些精靈分組在一起。但是,我遇到了這個問題。我認爲這將非常簡單,使一個孤立的,「無類」的精靈,並將其添加到列表。

bloobList = pygame.sprite.Group() 

blooby = pygame.sprite.Sprite 

blooby.image = pygame.Surface([200,200]) 
blooby.image.fill([0,0,0]) 
blooby.rect = blooby.image.get_rect() 

bloobList.add(blooby) 

但是,當運行這個時,應用程序在啓動時崩潰。我的IDE從pygame的圖書館開闢了sprite.py,帶我到線378,並告訴我:

builtins.TypeError: add_internal() missing 1 required positional argument: 'group' 

我GOOGLE了四處尋找這意味着什麼,沒有發現答案。爲了檢查我自己,我寫了一個類+對象+組添加方案完全相同的程序:

moochList = pygame.sprite.Group() 

class Mooch(pygame.sprite.Sprite): 
    def __init__(self): 
     pygame.sprite.Sprite.__init__(self) 
     self.image = pygame.Surface([200,200]) 
     self.image.fill([0,0,0]) 
     self.rect = self.image.get_rect() 

stootch = Mooch() 

moochList.add(stootch) 

而這一個完美的工作一切正常。我查看了Pygame.org的文檔,我不認爲它必須是一個從類中產生的對象,才能被添加到一個組中,但它並沒有具體說「無類」的精靈也是允許的。

我是Pygame的全新新人,因此我期望知道我錯過了一些非常明顯的東西,但是導致我認爲應該允許進入組的分類精靈是group.add函數涉及特定的精靈名稱和組本身 - 沒有提及精靈屬於的類。

回答

0

發生此錯誤的原因是您嘗試將pygame.sprite.Sprite類添加到組而不是實例。添加圓括號,創建實例/對象時,它應該可以正常工作:

blooby = pygame.sprite.Sprite()