Esempio n. 1
0
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)
Esempio n. 2
0
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)