這是當我嘗試從列表中刪除一個精靈以使其從屏幕上被刪除時所得到的錯誤。我可以通過按下一個鍵來調出這個精靈,但是當我嘗試刪除它時會發生這種情況。 我是在Purpongie的collision detection視頻的幫助下親自操作我自己的代碼。TypeError:destroy()需要0個位置參數,但給出了1個
現在我會告訴你我的省略最無關的事情:
Main.py
while True:
process(Select)
H2Ps.destroy()
H2Ps.List.draw(screen)
Classes.py
class BaseClass(pygame.sprite.Sprite):
allsprites = pygame.sprite.Group()
def __init__(self, x, y, image_string):
pygame.sprite.Sprite.__init__(self)
BaseClass.allsprites.add(self)
self.image = pygame.image.load(image_string)
self.rect = self.image.get_rect()
self.rect.x = x
self.rect.y = y
def destroy(self, ClassName):
ClassName.List.remove(self)
BaseClass.allsprites.remove(self)
del self
class H2Ps(BaseClass):
List = pygame.sprite.Group()
def __init__ (self,x,y,image_string):
BaseClass.__init__(self,x,y,image_string)
H2Ps.List.add(self)
@staticmethod
def destroy():
for test in H2Ps.List:
if (pygame.key.get_pressed()[pygame.K_ESCAPE]):
test.destroy(H2Ps)
Process.py
def process(Select):
if Select.rect.collidepoint(370,400): #How to play
if keys[pygame.K_RETURN]:
HowToPlay = H2Ps(0,0,"Images/How To Play.png")
我相信t該錯誤指出Classes.py中的test.destroy(H2Ps)
有問題。我已經運行它,它似乎工作,但現在我不確定我可能已經改變,將打破它。我非常感謝一些解決方案。
在Classes.py中有兩個destroy()函數,一個接受參數,另一個不接受。我不確定在這種情況下Python的行爲。 – ydaetskcoR
他的縮進已關閉;兩者都是不同類別的方法。 – chepner