我已經通過將精靈從屏幕上移開找到了解決此問題的解決方案,但我想知道是否有一種更符合道德的方式來解決它,例如將它從sprite.group。我已經嘗試過,但是因爲硬幣是在if語句中聲明的,所以它只是將自己添加回屏幕。從循環中聲明的Pygame.Group中刪除精靈
該代碼是控制硬幣的程序部分的快速總結。 '玩家'由用戶控制。 在我更新的代碼中,我將coin.rect.collide if語句中的硬幣從屏幕上移開。
Class Coin (pygame.sprite.Sprite):
def __init__(self, x, y):
super().__init__()
self.image = image
self.rect = get rect
self.rect.x = y
self.rect.y = y
class room1(Room):
def __init__(self):
Room.__init__(self)
class player (pygame.sprite.Sprite):
def __init__(self,x,y):
super().__init__()
self.image = pygame.image.load ('playerimg.png')
self.rect = self.image.get_rect()
self.rect.x = x
self.rect.y = y
def mainLoop():
global coin
coin= Coin(10,10)
spritegroup = pygame.sprite.group
gameLoop = 1
while gameLoop ==1:
#keyboard controls
#room changing code
if room1 == 2:
if coin.rect.coliderect(player.rect):
spritegroup.remove(coin)
spritegroup.add(coin)
spritegroup.draw(screen)
spritegroup.update()
嗯,在'mainLoop'函數中沒有循環。我認爲在試圖簡化問題的代碼時,可能會簡化太多,代碼不再顯示您遇到的問題。請製作一個實際顯示您的問題的[MCVE](http://stackoverflow.com/help/mcve)。 – Blckknght
哦,對不起。我在gameLoop中編輯並移動了一些代碼。希望它現在顯示問題。 –