def perform_round(arena, units):
    """
    Performs a round of moving and combat, returns True if the full round is executed.
    """
    # Order units and split into goblins and elves
    units = [u for u in sorted(units, key=lambda u: (u.x, u.y)) if not u.dead]

    for unit in units:
        result, data = unit.perform_turn(arena, units)
        if result == 'no-targets':
            return False  #Nothing to attack, game over

    return True