План реализации
Репозиторий проекта
ssh://hg@kodomo.fbb.msu.ru/cca
Распределение работы
Руслан Айдарханов - Класс Automata и методы рисования на канве
- Илья Курочкин - Представление интерфейса.
- Иван Русинов - Обработка событий (взаимодействие с пользователем) и сохранение и загрузка файлов.
Структура данных
Модуль State.py:
1 class State(object):
2 def __init__(self,name,symbol,color,nums,key):
3 #name - имя, symbol - символ, который записывается в файл или хранится в массиве, color - цвет отображения, nums - условия перехода - список цифр от 0 до 9, если такое кол-во окружающих клеток с таким же состоянием - переход, соответствующая кнопка на клаве
4 self.name=name
5 self.symbol=symbol
6 self.color=color
7 self.nums=nums
8 self.key=key
9 def nextState(self,num):
10 #num - число окружающих клеток в таком же состоянии
11 return num in self.nums
12 def __repr__(self):
13 pass
Модуль Automata.py:
1 class Automata(object):
2 #field[][]
3 #states[]
4 #все изменеия состояния клеток поля и изменения в списке состояний предлагаю делать через непосредственное обращение к соответствующим спискам экземпляра класса, который будет храниться в интрефейсе
5 def __init__(self,width,height,states):
6 pass
7 def nextStep():
8 pass
9 def changeSize(width,height):
10 pass
11 def containState(symbol):
12 return False
Модуль Interface.py:
1 automata
2 handlers
3 #menu
4 #infoPanel=Frame
5 #canvas
6 #actionPanelFrame start stop nextStep zoomIn zoomOut faster slower
7
8
9 class Handlers(object):
10 {???
11 def __init__(self):
12 }
13 def start():
14 pass
15 def stop():
16 pass
17 def nextStep():
18 pass
19 def saveFile():
20 pass
21 def openFile():
22 pass
23 def help():
24 pass
25 def zoomIn():
26 pass
27 def zoomOut():
28 pass
29 def slower():
30 pass
31 def faster():
32 pass
33 def changeSize():
34 pass
35 def draw():
36 pass
37 def press1():# рисовалка
38 pass
39 def motion1():# рисовалка
40 pass
41 def press3():# рисовалка
42 pass
43 def motion3():# рисовалка
44 pass
45 def pressKey1():# рисовалка+перемещение по полю (левая+ctrl)
46 pass
47 def motionKey1():# рисовалка+перемещение по полю (левая+ctrl)
48 pass
49 def press12():# zoom
50 pass
51 def motion12():# zoom
52 pass
53 #_______change order of states_________
54 def changeStates():# появление окошка для изменения порядка состояний: список параметров, можно выбрать один или два и есть три кнопки: toTop toBottom switch delete
55 pass
56 def toTop():# отправляет один элемент списка в начало
57 pass
58 def toBottom():# отправляет один элемент списка в конец
59 pass
60 def switch():# меняет два выбранных элемента местами
61 pass
62 def deleteState():
63 pass
64 def closeChangeWindow():# закрывает окно изменения порядка состояний
65 #_______add state_____________________
66 def addState():# открытие окошка добавления, две кнопки: add close
67 pass
68 def add():
69 pass
70 def closeAddWindow():
71 pass
72 #________change state parameters________
73 def changeStateParameters():# появление окошка, в котором есть список состояний, облавти ввода текста с подписями, которые самозаполняются при выделении элементов списка, есть кнопки OK close delete
74 pass
75 def ok():
76 pass
77 #deleteState уже есть
78 def closeStateWindow():
79 pass