Моделирование схемы Жизнь
Рефераты >> Программирование и компьютеры >> Моделирование схемы Жизнь

2.4.3. Процедура Setup случайным образом заполняет поле клетками. Плотность заполнения определяется аргументом стандартной функции Random.

2.4.4. Процедура Copy копирует содержимое вспомогательного массива B в основной массив A.

2.4.5. Процедура Count производит подсчет клеток, находящихся в данный момент на поле. В начале ее выполнения переменная liveобнуляется. После этого проверяется содержимое каждой обрабатываемой ячейки основного массива A[i,j] и, если она не пуста, переменная liveувеличивается на 1.

2.4.6. Процедура Draw выводит содержимое основного массива A в виде графического построения. Каждая ячейка массива A представлена на экране прямоугольником 10х8 pix. В зависимости от содержимого ячейки он может иметь ярко-зеленый цвет и сплошную заливку (клетка) или темно-синий цвет и штриховую заливку типа 9 (пустая ячейка). Поверх заполненных прямоугольников (оператор Bar) на том же самом месте рисуются контурные прямоугольники (оператор Rectangle) ярко-синего цвета из которых получается сетка.

2.4.7. Процедура Print осуществляет вывод на экран сопутствующей информации (переменные step, live, bornи deadcкомментариями). Переменные преобразуются в строковой вид с помощью процедуры Val и промежуточной переменной s, после чего с помощью стандартных арифметических действий, применимых к единицам данных типа string, формируется переменная stri, которая и выводится на экран оператором OutTextXY.

2.4.8. Описание процедуры FlipVP (модуль mono3d.tpu) выглядит так:

Procedure FlipVP(var P:Integer);

Begin

{}

{} SetVisualPage(P);

{} P:=1-P;

{} SetActivePage(p);

{} ClearDevice;

{}

End;

Она предназначена для того, чтобы скрыть от пользователя процесс прорисовки экрана. Принцип действия ее очевиден: активная видеостраница всегда остается невидимой.

2.5. Работа программы.

2.5.1. Начало программы.

2.5.1.1. Процедура Setup заполняет основной массив A (п. 2.4.3.)

2.5.1.2. Переменным iи jприсваиваются значения 9 и 1, что соответствует видеорежиму EGA640х350 pix, 16 цветов.

2.5.1.3. Оператор InitGraph устанавливает этот видеорежим.

2.5.2. Основной цикл программы.

2.5.2.1. Оператор While открывает цикл.

2.5.2.2. Функция Change используется как условие выполнения цикла, при этом выполняемые ею действия обрабатывают основной и вспомогательный массивы (п. 2.4.2.)

2.5.2.3. Счетчик шагов stepувеличивается на 1.

2.5.2.4. Процедура FlipVPпереключает активную и видимую видеостраницы (п. 2.4.8.).

2.5.2.5. Процедура Drawвыводит на активную видеостраницу отображение поля (массива A п.2.4.6.).

2.5.2.6. Процедура Count подсчитывает текущее количество клеток на поле (п. 2.4.5.).

2.5.2.7. Процедура Printвыводит на активную видеостраницу текущую информацию о состоянии системы (п.п. 2.4.7. и 2.2.4.).

2.5.2.8. Оператор Delay обеспечивает задержку выполнения цикла для удобства визуального наблюдения.

2.5.2.9. С помощью стандартных функций KeyPressedи ReadKeyкаскад условных переходов обеспечивает выход из цикла по нажатию клавиши (для этого в программе объявлена метка l).

2.5.3. Окончание программы.

2.5.3.1. После выхода из цикла по нажатию клавиши (п. 2.5.2.9) или по условию выхода (п. 2.5.2.2.) функция ReadKey приостанавливает программу до нажатия клавиши без изменения содержимого экрана.

2.5.3.2. Оператор CloseGraphотключает графический режим.

2.5.3.3. Оператор ClrScr очищает экран, приводя его в исходное состояние.

2.6. Основные недостатки программы.

2.6.1. Для нормальной работы функции Change (а точнее Nears) в поле имеются крайние ячейки A[0,0 31], A[51,0 31], A[0 51,0] и A[0 51,31], которые несмотря ни на какие условия всегда остаются пустыми, что снижает чистоту моделирования.

2.6.2. Некоторые параметры, такие как частота обновления, начальная плотность заполнения поля и др. изменяются только вмешательством непосредственно в текст программы.

2.6.3. Не предусмотрен выход из цикла при возникновении стабильных циклических процессов, которые воспринимаются функцией Change как изменения, хотя практически перестают являться таковыми.

3. Заключение.

3.1. В данной работе приведен простейший пример применения метода моделирования системы. Усложнение и модернизация алгоритма позволит с большей точностью отображать реальные процессы в модели.

3.2. В нынешней форме программа позволила выявить следующие нюансы:

3.2.1. Конечная картина представляется почти одинаковой при плотности заполнения поля от 1/2 до 1/6. При плотности ниже 1/6 система обычно довольно быстро приходит к полному «вымиранию».

3.2.2. Обнаружено несколько видов стабильных фигур. Например:

Циклические фигуры. Например:


Страница: