Ejemplo n.º 1
0
def read_space_objects_data_from_file(input_filename):
    """Cчитывает данные о космических объектах из файла, создаёт сами объекты
    и вызывает создание их графических образов

    Параметры:

    **input_filename** — имя входного файла
    """

    objects = []
    with open(input_filename) as input_file:
        for line in input_file:
            if len(line.strip()) == 0 or line[0] == '#':
                continue  # пустые строки и строки-комментарии пропускаем
            object_type = line.split()[0].lower()
            if object_type == "star":  # FIXME: do the same for planet
                star = Star()
                star.type = "star"
                parse_star_parameters(line, star)
                objects.append(star)
            elif object_type == "planet":  # FIXME: do the same for planet
                planet = Planet()
                planet.type = "planet"
                parse_planet_parameters(line, planet)
                objects.append(planet)
            else:
                print("Unknown space object")

    return objects
Ejemplo n.º 2
0
def parse_parameters(line):
    """Считывает данные о небесном теле из строки.
    Входная строка должна иметь слеюущий формат:
    Star <радиус в пикселах> <цвет> <масса> <x> <y> <Vx> <Vy>

    Здесь (x, y) — координаты, (Vx, Vy) — скорость.
    Пример строки:
    Star 10 red 1000 1 2 3 4

    Параметры:

    **line** — строка с описание небесного тела.
    **star** — объект.
    """
    object_type = line.split()[0].lower()
    if object_type == "star":
        star = Star()
        star.type = line.split()[0]
        star.R = float(line.split()[1])
        star.color = line.split()[2]
        star.m = float(line.split()[3])
        star.x = float(line.split()[4])
        star.y = float(line.split()[5])
        star.Vx = float(line.split()[6])
        star.Vy = float(line.split()[7])
        return star
    elif object_type == "planet":
        planet = Planet()
        planet.type = line.split()[0]
        planet.R = float(line.split()[1])
        planet.color = line.split()[2]
        planet.m = float(line.split()[3])
        planet.x = float(line.split()[4])
        planet.y = float(line.split()[5])
        planet.Vx = float(line.split()[6])
        planet.Vy = float(line.split()[7])
        planet.name = line.split()[10]

        return planet
    else:
        print("Unknown space object")