[关闭]
@websec007 2020-06-19T03:33:45.000000Z 字数 1634 阅读 310

Alien Invasion - 13.3 创建一群外星人

2020.Python从入门到实践


13.3.2 创建一群外星人

  1. def get_number_rows(game_settings, screen, ship):
  2. """计算屏幕可容纳多少行外星人"""
  3. # 创建一个外星人
  4. alien = Alien(game_settings, screen)
  5. # 计算可容纳多少行外星人
  6. available_space_y = (game_settings.height - (3 * alien.rect.height) - ship.rect.height)
  7. number_rows = int(available_space_y / (2 * alien.rect.height))
  8. return number_rows
  1. def get_number_aliens_x(screen, game_settings, ):
  2. """计算一行可以存放多少外星人"""
  3. # 创建一个外星人
  4. alien = Alien(game_settings, screen)
  5. # 计算一行可以空间大小
  6. available_space_x = game_settings.width - 2 * alien.rect.width
  7. # 计算一行可以存放多少外星人
  8. number_aliens_x = int(available_space_x / (2 * alien.rect.width))
  9. return number_aliens_x
  1. def create_alien(game_settings, screen, alien_number, row_number, aliens):
  2. # 创建一外星人对象,然后获取坐标(x,y)设定其位置属性
  3. alien = Alien(game_settings, screen)
  4. # x坐标:获取外星人实例对象的x坐标
  5. alien.x = alien.rect.width + alien.rect.width * 2 * alien_number
  6. alien.rect.x = alien.x
  7. # y坐标:获取外星人实例对象的y坐标
  8. alien.rect.y = alien.rect.height + 2 * alien.rect.height * row_number
  9. # 将创建的外星人对象逐个加入编组
  10. aliens.add(alien)
  1. def create_fleet(screen, game_settings, ship, aliens):
  2. # 计算主屏幕一行可以容纳多少外星人(width)
  3. number_aliens_x = get_number_aliens_x(screen, game_settings)
  4. # 计算主屏幕可以容纳多少行外星人(height)
  5. number_rows = get_number_rows(game_settings, screen, ship)
  6. # 创建外星人舰队(多行)
  7. for row_number in range(number_rows):
  8. # 创建第一行的 “number_alien_number” 外星人
  9. for alien_number in range(number_aliens_x):
  10. # 逐个间隔摆放外星人
  11. create_alien(game_settings, screen, alien_number, row_number, aliens)
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注