从中移除精灵Pygame.组在循环中声明

2024-09-25 02:34:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经找到了一个解决这个问题的办法,把精灵从屏幕上移开,但是我想知道是否有更合乎道德的方法来解决这个问题,比如把它从屏幕上移开sprite.group组. 我尝试过这样做,但是因为硬币是在if语句中声明的,它只是将自己添加回屏幕。你知道吗

这段代码是我控制硬币的程序部分的一个快速摘要。“player”由用户控制。 在我更新的代码中,我把硬币从屏幕上移开coin.rect.碰撞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()

Tags: rectimageselfif屏幕initdefgroup
1条回答
网友
1楼 · 发布于 2024-09-25 02:34:23

正如您所写的,只要room1 == 2,每次迭代都会向sprite组添加一个硬币。如果你把房间里所有的东西都放一次呢?你知道吗

room1IsLoaded = False

while gameLoop == 1:
  if not room1IsLoaded:
    spritegroup.add(coin)
    room1IsLoaded = True

相关问题 更多 >