- •Введение
- •1. Основные понятия системы рдо
- •2. Необходимые объекты модели
- •2.1. Объект типов ресурсов
- •2.2. Объект ресурсов
- •2.3. Объект образцов операций
- •2.4. Объект операций
- •2.5. Объект точек принятия решений
- •2.6. Объект прогона
- •3. Дополнительные объекты модели
- •3.1. Объект констант, функций и последовательностей
- •3.2. Объект кадров анимации
- •4. Объекты трассировки и сбора статистики
- •4.1. Объект трассировки
- •4.2. Объект требуемой статистики
- •4.3. Объект результатов
- •5. Работа в среде рдо
- •5.1. Окна редактора и имитатора исм рдо
- •5.2. Зарезервированные слова
- •5.3. Глобальные переменные и стандартные функции
- •6. Демонстрационные примеры
- •6.1. Моделирование экзамена
- •6.2. Моделирование игры
- •7. Содержимое каталога рдо
- •Литература
- •Оглавление
3.2. Объект кадров анимации
Описание кадров производится в отдельном объекте, который является исходным для системы отображения. Кадр представляет собой прямоугольную область экрана, в которой производится отображение. Он состоит из фоновой картинки и переменных элементов (элементов отображения или спрайтов), состав, форма, размеры и расположение которых определяются состоянием системы и, следовательно, могут изменяться во время просмотра кадра.
Описание кадра имеет формат:
$Frame<имя_кадра>
[Show_if<условие_показа_кадра> ]
$Back_picture =<описание_фоновой_картинки>
[<описание_элементов_отображения> ]
$End
Имя кадра представляет собой простое имя. Имена должны быть различными для всех кадров и не должны совпадать с ранее определенными именами. Условие показа кадра используется при автоматическом переключении кадров и представляет собой логическое выражение. Это логическое выражение вычисляется при каждом событии. Если оно истинно, то кадр отображается, если ложно нет. Если при очередном событии значение выражения меняется, то кадр либо появляется на экране, либо исчезает. Условие показа вместе с зарезервированным словомShow_ifможет отсутствовать. Кадры с заданным условием показа называют условными. Если при некотором состоянии моделируемой системы выполняются условия показа нескольких условных кадров, то отображается тот из них, который в объекте описания кадров встречается раньше других.
Пример условия показа кадра:
Show_if Time_now > 0.2 and Time_now <= 0.3
Такой условный кадр будет изображаться, если время в моделируемой системе находится в интервале от 0.2до 0.3 часа. Time_now глобальная системная переменная (будет рассмотрена далее в главе 5). При первом событии после того, как системное время станет больше 0.2,кадр автоматически появится на экране, при первом событии после0.3 кадр автоматически исчезнет.
Описание фоновой картинки имеет формат:
[ <цвет_фона> ] <размеры_кадра>|<имя_объекта_фона>
Цвет фона задает цвет части кадра, которая находится за пределами фоновой картинки. Цвет задается тремя численными константами целого типа, разделенными пробелами и заключенными в угловые скобки. Каждое число должно находиться в диапазоне [0, 255] изадает интенсивность одной из трех цветовых составляющих: первое число красной, второе зеленой, а третье синей.
Пример на описание различных цветов:
< 0 0 0 > черный
<255 0 0 > красный
< 0 255 0 > зеленый
< 0 0 255> синий
<255 255 0 > желтый
<255 255 255> белый
<127 127 127> серый
Цвет фона является необязательным параметром. Если он не задан, используется значение по умолчанию, равное < 0 1000 > (это значение соответствует темно-зеленому цвету).
Для описания фоновой картинки задают либо имя объекта, содержащего фоновое изображение, либо размер фоновой картинки. Объект фоновой картинки должен быть растровым изображением, сохраненным в формате независимой от устройства битовой карты (BMP-формате) и иметь тип .bmp. Такой объект может быть создан графическими редакторами, такими какPaintbrush,CorelDrawи др.
Имеется другая возможность задания фоновой картинки. Для этого вместо имени объекта указывают размеры фоновой картинки. В этом случае РДО-имитатор сам создает фоновую картинку, которая представляет собой прямоугольник указанного размера с цветом фона и границей черного цвета толщиной в один пиксель. Размеры задают двумя численными константами целого типа. Первое число задает ширину фоновой картинки и должно быть в диапазоне [1, 800], второе число задает высоту и должно находиться в диапазоне[1, 600].
Пример на описание фоновых картинок:
$Back_picture = <0 0 100> backgrd {фоновая картинка находится в объектеbackgrd.bmp, за ее пределами фон кадра имеет темно-синий цвет;}
$Back_picture = backgrd {фоновая картинка находится в объекте backgrd.bmp, зa ее пределами фон кадра имеет цвет по умолчанию;}
$Back_picture = <255 255 0> 640 480 {фоновая картинка есть прямоугольник желтого цвета (с границей черного цвета) шириной 640 и высотой 480 пикселей, за ее пределами фон кадра имеет желтый цвет;}
$Back_picture = 640 480 {фоновая картинка есть прямоугольник шириной 640 и высотой 480 пикселей с цветом фона по умолчанию (темно-зеленый) и границей черного цвета, за ее пределами фон кадра имеет цвет по умолчанию.}
Элементы отображения могут отсутствовать.
Пример кадра без элементов отображения:
$Frame Кадр_3
Show_if Ресурс_1.Параметр_5 = Свободен
$Back_picture = <0 0 255> backgrd
$End
Этот кадр будет автоматически появляться на экране, если Параметр_5ресурса Ресурс_1 имеет значение "Свободен". Общий фон кадра синий, фоновая картинка хранится в объектеbackgrd.bmp.
Элементы отображения разбивают на множества отображения. Множества бывают условными (элементы множества отображаются только в том случае, если условие показа истинно) и безусловными.
Формат описания условного множества:
Show_if <условие_показа>
{ <элемент_отображения> }
Формат описания безусловного множества:
Show
{ <элемент_отображеня> }
В кадре может быть произвольное количество условных и безусловных множеств. Они могут располагаться в произвольном порядке. Количество и порядок следования элементов отображения произвольны. Условие показа представляет собой логическое выражение. Элемент отображения (спрайт) имеет формат:
<тип_элемента> "["<свойства_элемента> "]"
Тип элемента задают одним из следующих зарезервированных слов:
text –текстовый элемент;
bitmap –битовая карта;
s_bmp– масштабируемая битовая карта;
rect – прямоугольник;
r_rect– прямоугольник со скругленными углами;
linе –отрезок прямой;
ellipse– эллипс (окружность);
triangr– треугольник.
Порядок записи, количество и смысл свойств элемента зависят от типа элемента. Свойства элементов записываются в прямых скобках и разделяются запятыми.
Первые два свойства элементов всех типов их координаты. Координаты элемента есть координаты в пикселях левого верхнего угла прямоугольника, являющегося границей элемента. Их задают арифметическими выражениями, которые являются относительными, т.е. отсчитываются от левого верхнего угла кадра вправо и вниз. Если результат вычисления арифметического выражения имеет вещественный тип, то он округляется.
Свойствами многих элементов являются также размеры (ширина и высота в пикселях) и цвета. Размеры элемента задаются арифметическими выражениями, вещественные значения округляются до целого числа пикселей. Цвет задается тремя численными константами целого типа, разделенными пробелами и заключенными в угловые скобки. Каждое число должно находиться в диапазоне [0, 255] изадает интенсивность одной из трех цветовых составляющих: первое число красной, второе зеленой, а третье синей.Задавая разные значения цветовых составляющих, можно получить более шестнадцати миллионов цветов. Реальное максимально возможное количество цветов определяется видеоадаптером и режимом его работы. Если видеоадаптер не может изобразить заданный цвет, то системаWindowsзаменяет заданный цвет ближайшим из числа возможных. Фон текстовых элементов и внутренние части фигур могут быть также прозрачными. Для этого необходимо вместо цвета фона записать зарезервированное словоtransparent.
При изменении состояния модели значения выражений, определяющих координаты и размеры элемента, могут изменяться, т.е. элемент может перемещаться по экрану и меняться в размерах. Если при этом элемент выходит за границы кадра, то он автоматически усекается. Прорисовка элементов происходит в том порядке, как они записаны в объекте кадров, т.е. при наложении элементов тот из них, который описан в объекте раньше, будет скрыт (полностью или частично) под элементом, описанным позже.
Далее рассматриваются элементы различных типов.
Текстовый элемент (text) имеет формат:
text "["<Х_координата>,<Y_координата>,<ширина>,<высота>,
<цвет_фона>,<цвет>,[<способ_ размещения>] <содержимое> "]"
Способ размещения задает размещение выводимой строки (содержимого) в поле элемента. Он может быть опущен, в этом случае строка сдвигается к левому краю. Способ размещения задают одним из следующих символов:
"<" сдвинуть к левому краю;
"=" выровнять по центру;
">" сдвинуть к правому краю.
В том случае, если длина выводимой строки больше ширины элемента, строка усекается.
Содержимое элемента описывают одним из следующих способов:
арифметическим выражением (выводимая строка представляет собой результат вычисления выражения; это целое либо вещественное число, или имя значения перечислимого типа);
строковой константой (выводимой строке присваивается значение строковой константы).
Для изображения строк текста используется системный шрифт Windows.
Пример на описание текстовых элементов:
text [497, 76, 250, 15, <255 255 255>, <204 153 153>,
'Количество студентов в очереди:']
text [650,76, 100, 15, transparent, <255 0 0>,
> Зачет_1.Количество_студентов_в_очереди]
Битовая карта (bitmap) имеет формат:
bitmap "["<X_координата>, <Y_координата>, <имя_объекта_битовой_карты>, <имя_объекта_маски> "]"
Для создания элемента отображения в виде битового образа произвольной формы необходимы два объекта: объект изображения и объект маски. Оба этих объекта должны иметь формат аппаратно-независимой битовой карты (BMP-формат).Они могут быть созданы с помощью графического редактора. Имена этих объектов без типа указывают в описании свойств элемента. Тип объектов должен быть .bmp.
Объект изображения содержит рисунок элемента (спрайта), изображенный на черном фоне. Маска содержит силуэт спрайта. Она черная на белом фоне. Такое сочетание изображения и маски приводит к тому, что в тех областях, где маска черная, будет изображаться рисунок спрайта, а там, где маска белая, будет виден фон, на котором изображается элемент.
Пример на описание элемента типа битовая карта:
bitmap [Дверь.Координата_X, Дверь.Координата_Y, door1, door1msk]
Содержимое объектов door1 и door1msk приведено ниже (маска справа).
При использовании таких изображения и маски на экране будет видна приоткрытая дверь на фоновой картинке кадра. При изменении параметров Дверь.Координата_X и Дверь.Координата_Y дверь будет перемещаться.
Маштабируемая битовая карта (s_bmp) имеет формат:
s_bmp "[" <Х_координата>, <Y_координата>, <ширина>, <высота>, <имя_объекта_битовой_карты>, <имя_объекта_маски> "]"
Элементы этого типа описываются аналогично битовым картам за исключением того, что после координат записывают арифметические выражения для вычисления размеров элемента. Исходный битовый образ, находящийся в объектах изображения и маски, растягивается или сжимается независимо по двум осям так, чтобы его размеры стали равны размерам элемента.
Пример на описание элемента типа масштабируемая битовая карта, в котором исходный битовый образ перемещается по осям и масштабируется по оси X:
s_bmp [ Рис.Координата_X, Рис.Координата_Y, Рис.Координата_X / 50, 40, ring, ringmsk]
Прямоугольник (rect) имеет формат:
rect "[" <Х_координата>, <Y_координата>, <ширина>, <высота>, <цвет_фона>, <цвет> "]"
Этот элемент изображает в заданных координатах прямоугольник заданного размера с указанным цветом границы и заполнения. Стороны прямоугольника параллельны координатным осям. Если координаты или размеры любого графического элемента описаны в виде арифметических выражений, то при изменении их значений элемент будет перемещаться и изменятся в размерах. Граница изображается линией толщиной в один пиксель.
Пример описания прямоугольника:
rect [ 486, 80, 264, 440, transparent, <0 0 0>]
В этом примере изображается прозрачный прямоугольник, верхний левый угол которого расположен в точке (486, 80), длина стороны по оси X равна 264, а по оси Y 440. Граница прямоугольника имеет черный цвет.
Прямоугольник со скругленными углами (r_rect) имеет формат:
r_rect "[" <X_координата>, <Y_координата>, <ширина>, <высота>, <цвет_фона>, <цвет> "]"
Этот элемент описывается так же, как и прямоугольник. Различие в изображении состоит в округлении углов прямоугольника, которое производится дугой окружности с радиусом, равным минимальному из двух размеров прямоугольника, деленному на два.
Отрезок прямой (line) имеет формат:
line "[" <Х_координата_1>, <Y_координата_1>, <Х_координата_2>, <Y_координата_2>, <цвет> "]"
Этот элемент изображает отрезок прямой заданного цвета между двумя точками с указанными координатами. Толщина линии равна одному пикселю.
Эллипс (ellipse) описывается в формате:
ellipse "[" <Х_координата>, <Y_координата>, <ширина>, <высота>, <цвет_фона>, <цвет> "]"
Этот элемент изображает в заданных координатах эллипс с заданными длинами осей с указанным цветом границы и заполнения. Оси эллипса параллельны координатным осям. Координаты задают положение левого верхнего угла описанного прямоугольника со сторонами, параллельными координатным осям. Ширина определяет длину оси эллипса, параллельной оси X, высота длину оси эллипса, параллельной оси Y. Граница изображается линией толщиной в один пиксель.
Треугольник (triang) имеет формат:
triang "[" <Х_координата_1>, <Y_координата_1>, <Х_координата_2>, <Y_координата_2>, <X_координата_3>, <Y_координата_3>, <цвет_фона>, <цвет> "]"
Треугольник задается координатами трех его вершин. Как и у прямоугольников и эллипсов, внутренняя область треугольника может быть прозрачной либо иметь какой-либо цвет. Граница треугольника изображается линией указанного цвета толщиной в один пиксель.
Пример задания множеств отображения:
Show
text [175, 80, 50, 20, <255 255 0>, <0 0 255>,
< Экзамен.Очередь1 ]
text [417, 80, 50, 20, <255 255 0>, <0 0 255>,
< Экзамен.Очередь2 ]
{Очередь за дверью из примера Examen:}
Show_if Экзамен.Очередь1 => 1
bitmap [40, 360, say, saymask]
Show_if Экзамен.Очередь1 => 2
bitmap [41, 370, say, saymask]
Show_if Экзамен.Очередь1 => 3
bitmap [42, 380, say, saymask]
. . . . . .