Kodomo

Пользователь

ТЗ проекта «Универсальные клеточные автоматы»

Клеточный автомат (КА) — набор клеток, образующих некоторую периодическую решетку с заданными правилами перехода, определяющими состояние клетки в следующий момент времени через состояние этой клетки и окружающих её клеток в текущий момент времени.

Синхронный КА - такой КА, в котором все клетки переходят в новое состояние одновременно, используя при этом старые состояния соседних клеток для определения своего нового состояния.

Детерминированный КА - КА, в котором состояние любой клетки в последующий момент однозначно определяется её состоянием и состоянием её соседей в данный момент времени.

Программа - редактор синхронных детерминированных клеточных автоматов. Есть набор состояний и для каждого состояния есть набор переходов, описанных правилами перехода для конкретного состояния. Правила переходов задаются через указание состояний клеток ближайшего окружения (8 шт).

У пользователя будет возможность запускать и приостанавливать автомат, а так же менять:


Обмен информацией с пользователем будет осуществляться через графический интерфейс. Это окно, которое включает область рисования состояния клеточного автомата, строку меню, строку инструментов и строку состояния.

Меню включает следующие пункты:

Строка инструментов содержит:

Строка состояния

Строка состояния будет содержать информацию о состоянии автромата, скорости перерисовки, размере поля, а также, возможно, координаты клетки под курсором мыши.

Управление мышью и клавиатурой:


Окно программы

https://kodomo.fbb.msu.ru/~is_rusinov/UCA/main_frame.png

Диалог изменения автомата

https://kodomo.fbb.msu.ru/~is_rusinov/UCA/automaton_frame.png

Несколько комментариев:


Документация на языке интерфейса. Вызов через меню Help. Будет описано только, как пользоваться программой и что она делает. Программа должна будет работать при условии установленного Python v2.7 + pyGTK (желательно запускать на суперкомпьютере, иначе приемлимая скорость не гарантируется для поля, размером больше 30*30 :-( ).


Программа будет написана на Python, оформление кода по правилам PEP-8, требования к качеству кода: