def check_alien_bullet_collisions(ai_settings, screen, stats, sb, ship, aliens, beams, bullets, ufo): """Check that any aliens have been hit, handle empty fleet condition""" collisions = pygame.sprite.groupcollide(bullets, aliens, True, False, collided=alien_collision_check) if collisions: for aliens_hit in collisions.values(): for a in aliens_hit: stats.score += ai_settings.alien_points[str(a.alien_type)] a.begin_death() sb.prep_score() check_high_score(stats, sb) ufo_collide = pygame.sprite.groupcollide(bullets, ufo, True, False, collided=alien_collision_check) if ufo_collide: for ufo in ufo_collide.values(): for u in ufo: stats.score += u.score u.begin_death() sb.prep_score() check_high_score(stats, sb) if len(aliens) == 0: # destroy all existing bullets and re-create fleet, reset speed, increase starting speed if ufo: for u in ufo.sprites(): u.kill() # kill any UFOs before start of new level beams.empty() bullets.empty() stats.level += 1 level_intro(ai_settings, screen, stats) # play an intro for the level ai_settings.increase_base_speed( ) # increase base speed, reset speed to base ai_settings.reset_alien_speed() sb.prep_level() # setup scoreboard create_fleet(ai_settings, screen, ship, aliens) stats.next_speedup = len(aliens) - ( len(aliens) // 5) # Get next number of aliens to speedup at stats.aliens_left = len(aliens) if stats.aliens_left <= stats.next_speedup and ai_settings.alien_speed_factor < ai_settings.alien_speed_limit: # If the number of aliens left is low enough, and we haven't already hit the limit, speed up aliens ai_settings.increase_alien_speed() stats.next_speedup = stats.aliens_left - (stats.aliens_left // 5)
def check_bullet_alien_collisions(ai_settings, screen, stats, sb, ship, aliens, alien_bullets, bullets, ufo): """Check that any aliens have been hit, handle empty fleet condition""" collisions = pygame.sprite.groupcollide(bullets, aliens, True, False, collided=alien_collision_check) # When collisions occur to aliens if collisions: for aliens_hit in collisions.values(): for a in aliens_hit: # Set scores stats.score += ai_settings.alien_points[str(a.alien_type)] a.bullet_collide() sb.prep_score() check_high_score(stats, sb) # When collisons occur to ufo ufo_collide = pygame.sprite.groupcollide(bullets, ufo, True, False, collided=alien_collision_check) if ufo_collide: for ufo in ufo_collide.values(): # Update scores for u in ufo: stats.score += u.score u.hit_ufo() sb.prep_score() check_high_score(stats, sb) if len(aliens) == 0: if ufo: for u in ufo.sprites(): u.died() # Manages the alien bullets and manages level increases alien_bullets.empty() bullets.empty() stats.level += 1 level_intro(ai_settings, screen, stats) # Manages music speed ai_settings.increase_base_speed() # Manages alien speed ai_settings.reset_alien_speed() # Calls to show scoreboard sb.prep_level() # Crate the fleet of aliens create_fleet(ai_settings, screen, ship, aliens) stats.next_speedup = len(aliens) - (len(aliens) // 5) stats.aliens_left = len(aliens) if stats.aliens_left <= stats.next_speedup and ai_settings.alien_speed_factor < ai_settings.alien_speed_limit: # Increases speed of aliens when certain aliens left ai_settings.increase_alien_speed() stats.next_speedup = stats.aliens_left - (stats.aliens_left // 5)
def check_alien_bullet_collisions(ai_settings, screen, stats, sb, ship, aliens, beams, bullets, ufo): collisions = pygame.sprite.groupcollide(bullets, aliens, True, False, collided=alien_collision_check) if collisions: for aliens_hit in collisions.values(): for a in aliens_hit: stats.score += ai_settings.alien_points[str(a.alien_type)] a.begin_death() sb.prep_score() check_high_score(stats, sb) ufo_collide = pygame.sprite.groupcollide(bullets, ufo, True, False, collided=alien_collision_check) if ufo_collide: for ufo in ufo_collide.values(): for u in ufo: stats.score += u.score u.begin_death() sb.prep_score() check_high_score(stats, sb) if len(aliens) == 0: if ufo: for u in ufo.sprites(): u.kill() beams.empty() bullets.empty() stats.level += 1 level_intro(ai_settings, screen, stats) ai_settings.increase_base_speed() ai_settings.reset_alien_speed() sb.prep_level() create_fleet(ai_settings, screen, ship, aliens) stats.next_speedup = len(aliens) - (len(aliens) // 5) stats.aliens_left = len(aliens) if stats.aliens_left <= stats.next_speedup and ai_settings.alien_speed_factor < ai_settings.alien_speed_limit: ai_settings.increase_alien_speed() stats.next_speedup = stats.aliens_left - (stats.aliens_left // 5)