使用PyGame,我在太空入侵者风格的游戏中为外星人创建了一个精灵组。
我的问题是如何让外星人同时移动? Alien的每个实例都存储在一个列表中。
答案 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
功能非常快,所以如果你有很多外星人,它应该可以很好地工作。
谢谢:)