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
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")