创建外星人群及飞船与外星人相撞
This commit is contained in:
parent
0f722eae70
commit
c22f8bb7f1
|
@ -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
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue