forked from mipt-cs/2016-solar_project
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsolar_input.py
More file actions
98 lines (80 loc) · 3.98 KB
/
Copy pathsolar_input.py
File metadata and controls
98 lines (80 loc) · 3.98 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
from solar_objects import Star, Planet
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 not line.strip() or line[0] == '#':
continue # пустые строки и строки-комментарии пропускаем
object_type = line.split()[0].lower()
if object_type == "star": # FIXME: do the same for planet
star = Star()
parse_star_parameters(line, star)
objects.append(star)
elif object_type == "planet":
planet = Planet()
parse_planet_parameters(line, planet)
objects.append(planet)
else:
print("Unknown space object")
return objects
def parse_star_parameters(line, star):
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()[6])
print(float(line.split()[1]))
"""Считывает данные о звезде из строки.
Входная строка должна иметь слеюущий формат:
Star <радиус в пикселах> <цвет> <масса> <x> <y> <Vx> <Vy>
Здесь (x, y) — координаты зведы, (Vx, Vy) — скорость.
Пример строки:
Star 10 red 1000 1 2 3 4
Параметры:
**line** — строка с описание звезды.
**star** — объект звезды.
"""
pass # FIXME: not done yet
def parse_planet_parameters(line, planet):
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 <радиус в пикселах> <цвет> <масса> <x> <y> <Vx> <Vy>
Здесь (x, y) — координаты планеты, (Vx, Vy) — скорость.
Пример строки:
Planet 10 red 1000 1 2 3 4
Параметры:
**line** — строка с описание планеты.
**planet** — объект планеты.
"""
pass # FIXME: not done yet...
def write_space_objects_data_to_file(output_filename, space_objects):
"""Сохраняет данные о космических объектах в файл.
Строки должны иметь следующий формат:
Star <радиус в пикселах> <цвет> <масса> <x> <y> <Vx> <Vy>
Planet <радиус в пикселах> <цвет> <масса> <x> <y> <Vx> <Vy>
Параметры:
**output_filename** — имя входного файла
**space_objects** — список объектов планет и звёзд
"""
with open(output_filename, 'w') as out_file:
for obj in space_objects:
print(out_file, "%s %d %s %f" % ('1', 2, '3', 4.5))
# FIXME: should store real values
# FIXME: хорошо бы ещё сделать функцию, сохранающую статистику в заданный файл...
if __name__ == "__main__":
print("This module is not for direct call!")