创建外星人群及飞船与外星人相撞

This commit is contained in:
206530335 2021-06-15 20:10:13 +08:00
parent 0f722eae70
commit c22f8bb7f1
1 changed files with 48 additions and 0 deletions

View File

@ -247,3 +247,51 @@ def create_alien(ai_settings, screen, aliens, alien_number, row_number):
aliens.add(alien)
def create_fleet(ai_settings, screen, ship, aliens):
"""
创建外星人群
"""
# 创建一个外星人并计算一行可容纳多少个外星人
# 外星人间距为外星人的宽度
alien = Alien(ai_settings, screen)
number_aliens_x = get_number_aliens_X(ai_settings, alien.rect.width) # 一行可容纳外星人的个数
number_rows = get_number_rows(ai_settings, alien.rect.height,
ship.rect.height) # 屏幕上可容纳外星人的行数
# 内外双循环创建外星人群
for row_number in range(number_rows): # 外循环创建外星人行数
for alien_number in range(number_aliens_x): # 内循环创建外星人
create_alien(ai_settings, screen, aliens, alien_number, row_number) # 调用创建外星人的函数
def check_fleet_edges(ai_settings, aliens):
"""
有外星人到达边缘时采取相应的措施
"""
for alien in aliens.sprites():
if alien.check_edges():
change_fleet_direction(ai_settings, aliens)
break
def change_fleet_direction(ai_settings, aliens):
"""
将整全外星人下移并改变它们的方向
"""
for alien in aliens.sprites():
alien.rect.y += ai_settings.fleet_drop_speed
ai_settings.fleet_direction *= -1
def check_aliens_bottom(ai_settings, game_stats, scoreb, screen, ship, aliens, bullets):
"""检测外星人是否到达屏幕底部"""
screen_rect = screen.get_rect()
for alien in aliens.sprites():
if alien.rect.bottom >= screen_rect.bottom:
# 外星人触底爆炸声
music.voice_large()
# 有外星人到达屏幕后进行像飞船被撞后一样的操作
ship_aliens_hit(ai_settings, game_stats, scoreb, screen, ship, aliens, bullets)
break