-
Notifications
You must be signed in to change notification settings - Fork 506
/
Copy pathsolar_input.py
86 lines (63 loc) · 3.27 KB
/
solar_input.py
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
# coding: utf-8
# license: GPLv3
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 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()
parse_star_parameters(line, star)
objects.append(star)
else:
print("Unknown space object")
return objects
def parse_star_parameters(line, star):
"""Считывает данные о звезде из строки.
Входная строка должна иметь слеюущий формат:
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 <радиус в пикселах> <цвет> <масса> <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!")