PyGame - 如何同时移动多个精灵?

时间:2017-02-01 22:52:13

标签: python list python-3.x animation pygame

使用PyGame,我在太空入侵者风格的游戏中为外星人创建了一个精灵组。

我的问题是如何让外星人同时移动? Alien的每个实例都存储在一个列表中。

2 个答案:

答案 0 :(得分:2)

使用小“步”从列表中移动每个外星人。之后,你从头开始。如果你将在循环(mainloop)中重复它,那么它将看起来像所有外星人同时移动。

# mainloop

while True:

   # events
   # ....

   # updates

   for aline in aliens_group:
       alien.rect.x += 1 # small move
       # or 
       alien.update() # function have to do small move

   # draws
   # ...

顺便说一句:如果外星人有update()功能,你将外国人留在pygame.sprite.Group,那么你只需要group.update()

class Alien:

     def update(self):
         self.rect.x += 1 # small move

# init

aliens_group = pygame.sprite.Group()

alien_1 = Alien()
alien_2 = Alien()

aliens_group.app(alien_1, alien_2)

# mainloop

while True:

   # events
   # ....

   # updates

   aliens_group.update() # function have to do small move

   # draws

   aliens_group.draw()

答案 1 :(得分:-1)

好的,假设您在列表中拥有外星人的位置,您可以使用map功能:

aliens = [[0,0],[5,9],[5,2]] # Three aliens in list, these are their X,Y coords.

def move_alien_right(alien):
    alien[0] += 1
    return alien

aliens = list(map(move_alien_right,aliens))

print(aliens)

map功能非常快,所以如果你有很多外星人,它应该可以很好地工作。

谢谢:)