首页 > 解决方案 > 如何限制pygame中的精灵列表

问题描述

我只是在学习 pygame,但遇到了问题。我的程序创建了一支你必须消灭的外星人舰队。我想在完全移除后立即生成整个舰队,但是当你摧毁另一艘船时,我的程序会立即生成一艘船。

我尝试使用 while len < 48 来限制列表,但它没有用。这是一次生成外星人的程序(我也在主循环之前插入了它):

 def create_fleet(custom_settings, screen, spaceship, aliens):
   alien = Alien(custom_settings, screen)
   number_aliens_x = get_number_aliens_x(custom_settings, alien.rect.width)
   number_rows = get_number_rows(custom_settings, spaceship.rect.height, alien.rect.height) #!!!
   for row_number in range(number_rows):
       for alien_number in range(number_aliens_x):
           if len(aliens) < 48:
                create_alien(custom_settings, screen, aliens, alien_number, row_number)

新船在左上边缘产卵

标签: pythonpygame

解决方案


我想在完全移除后生成整个舰队 [...]

所以你必须开始创建外星人舰队,一旦外星人的数量为 0 ( len(aliens) == 0`) 例如:

def create_fleet(custom_settings, screen, spaceship, aliens):

      if len(aliens) == 0:

          alien = Alien(custom_settings, screen)
          number_aliens_x = get_number_aliens_x(custom_settings,alien.rect.width)
          number_rows = get_number_rows(custom_settings,spaceship.rect.height,alien.rect.height)

          for row_number in range(number_rows):
              for alien_number in range(number_aliens_x):
                  if len(aliens) < 48:
                      create_alien(custom_settings, screen, aliens, alien_number, row_number)

推荐阅读