Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Примеры моделей, разработанных с использованием языка Java




Как уже говорилось, использование программного кода совместно в базо­выми средствами визуальной разработки моделей в AnyLogic существенно расширяет возможности разработчика. В данной главе подробно описаны две модели, в которых включение фрагментов программного кода позволяет эффективно реализовать сложные структуры данных и алгоритмы поведения объектов, которые невозможно описать с помощью одних только визуаль­ных средств.

8.1. Игра " Жизнь " (Life)

В этом разделе мы последовательно, шаг за шагом построим модель широко известной игры Life. Модель включает логику, которая должна выражаться программным кодом.

Постановка задачи

Игра "Жизнь" — это не игра в обычном смысле слова. В ней нет игроков, нет выигравших или проигравших. Игра состоит в том, что на двумерной решетке, разделенной на ячейки, каждая ячейка может быть в двух состоя­ниях, живая либо мертвая. Состояния всех ячеек решетки меняются син­хронно, по шагам. На каждом следующем шаге состояние ячейки зависит от ее состояния на предыдущем шаге и состояний восьми соседей в ее окруже­нии также на предыдущем шаге. В зависимости от количества живых сосе­дей, на очередном шаге ячейка становится живой или мертвой в соответст­вии со следующими правилами:

□мертвая ячейка, имеющая ровно три живых соседа, становится живой (рождение);

□ живая ячейка, имеющая два или три живых соседа, остается живой (вы­живает);


□ во всех остальных случаях ячейка умирает (умирает от перенаселения ли­бо от одиночества) или остается мертвой.

Двумерная решетка из ячеек может быть бесконечной либо представлять собой тор.

Построение модели

Наиболее просто построить визуализацию модели как состоящую из NxN квадратных ячеек, цвет каждой из которых определяется элементом двумер­ного булева массива той же размерности nxn. Шаги выполнения модели удобно задавать с помощью циклического таймера, каждое срабатывание которого вызовет функцию, которая подсчитает живых соседей всех ячеек и при необходимости изменит их состояния. Именно эта функция, которая реализует логику поведения модели, должна быть определена как дополни­тельный код на алгоритмическом языке вместе с необходимыми структура­ми данных.

В AnyLogic определите новый проект LifeGame. Введите в него новую ани­мацию, в которой установите следующие параметры штриховой рамки, oг-раничивающей поле изображения в работающей модели: X = —420, Y = —50 Ширина = 890, Высота = 570.

Анимация: прямоугольный массив ячеек

В какое-либо место поля анимации введите прямоугольник с именем cell шириной и высотой по 10 (пикселов), которая будет представлять ячейеку игры "Жизнь". В поле Количество этих прямоугольников установите n*N» (статическое) значение цвета прямоугольника может быть произвольным. Определенный так набор реплицированных (размноженных) объектов (пря­моугольников) составляет одномерный вектор из n*n фигур с номерами объектов от о до n*n-i. Определим в корневом активном объекте main целый параметр N со значением 45. Этот параметр устанавливает размер решетки.

Изменение состояний ячейки в игре "Жизнь" происходит в зависимости от количества окружающих ее живых ячеек, если они расположены в двумерной решетке. Однако определенный нами набор прямоугольников является одно­мерным — именно так представляется реплицированный объект в AnyLogic Для связи элементов одномерного вектора прямоугольников с двумерной ре­шеткой в анимации будем считать, что в решетке первый индекс (будем его для определенности всегда обозначать i) пробегает значения от 0 до n-1 по оси Y вниз в координатах поля анимации, а второй индекс (будем его для оп­ределенности обозначать j) пробегает значения от о до n-1 по оси X вправо в координатах поля анимации (рис. 8.1).


Если номер прямоугольника в перечислении этих прямоугольников как од-номерного массива графических объектов есть index, то пара координат (i, j) этого прямоугольника в двумерной решетке может быть подсчитана так:

i=index/N |j=index%N

По умолчанию index — имя переменной в AnyLogic, пробегающей все зна­чения номеров реплицированного объекта в окне его свойств. Поскольку мы определили размеры прямоугольника 10x10, то координаты прямоугольни-ков поле анимации легко определить так: X=10*(index%N) Y=10*(index/N)

Именно эти значения следует установить в поле динамических значений координат Х и У прямоугольников с именем cell в анимации. Все n*n пря-моугольников расположатся в плоскости поля анимации вплотную друг к другу в двумерной структуре. По оси X расположатся N первых прямо­угольников, ниже расположатся n вторых и т. п.

Откомпилируйте модель. Сравните ее с моделью LifeGame1 папки Model Examples\Part II.





Поделиться с друзьями:


Дата добавления: 2018-10-15; Мы поможем в написании ваших работ!; просмотров: 376 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Наглость – это ругаться с преподавателем по поводу четверки, хотя перед экзаменом уверен, что не знаешь даже на два. © Неизвестно
==> читать все изречения...

2668 - | 2233 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.01 с.