Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

lrgraph

.pdf
Скачиваний:
12
Добавлен:
11.03.2016
Размер:
749.88 Кб
Скачать

11

Лабораторная работа №2

Синтез динамического изображения средствами псевдографики

Цель работы: исследование алгоритмов формирования динамического изобра-жения средствами псевдографики.

Введение

Динамическое изображение, генерируемое на экране дисплея ПК, широко используется для иллюстрации протекания во времени различных процессов, связанных как с обслуживанием самого компьютера (копирование файлов, тестирование жесткого диска), так и выполнением на ПК различных прикладных программ (моделирование движения судна или робота, компьютерные игры, перемещение по экрану редактируемого текста и т.п.). Такое изображение обладает большей информативностью, чем статическое, но требует и больших трудозатрат для своей реализации. Наиболее полноценное, реалистичное динамическое изображение может быть получено только при работе дисплея в графическом режиме. Но часто требуемый результат может быть достигнут и средствами символьного режима, что снижает, в конечном итоге, требования к ресурсам компьютера и повышает его быстродействие. Динамическое изображение может быть синтезировано только программным путем.

Возможны различные подходы к формированию динамических изображений, представленные на рис. 2.1 - 2.4 в виде обобщенных алгоритмов. Выбор того или иного подхода определяется, в конечном итоге, видом самого изображения и направлен на минимизацию трудозатрат при его синтезе.

Рис. 2.1 представляет вариант формирования изображения, не содержащего ста-

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

Если изображение формируется только на части экрана, то рекомендуется выделить командой Window окно требуемого размера и работать в его пределах (рис. 2.2)

12

Если требуемое изображение содержит неподвижный фрагмент, то на каждом шаге рекомендуется стирать и синтезировать на новом месте только подвижную часть, что снижает общую трудоемкость генерации рисунка. При этом возможны следующие варианты:

н

Создание исходного изображения

Фиксация изображения на требуемое время

Изменение координат изображения

Очистка экрана

Создание нового изображения

Нет

Проверка

Да

 

выхода из

 

 

цикла

к

Рис. 2.1

с закраской цветом фона подвижной части (рис. 2.3)

с наложением на подвижную часть окна и его очисткой цветом фона (рис. 2.4)

Описание среды программирования

Синтез подвижного изображения может быть реализован средствами любого алгорит-

мического языка высокого уровня, содержащего процедуры и функции работы с экраном.. В

данной работе, как и в предыдущей, предлагается решить задачу на основе языка ТурбоПа-

скаль. Для этого вполне достаточно тех средств языка, которые были рассмотрены в лабора-

торной работе N1.

13

н

Задание начального положения окна

Установка окна с заданными координатами

Создание

изображения

Фиксация изображения на требуемое время

Изменение координат окна

Очистка окна

Да

Проверка

Нет

 

выхода из

 

 

цикла

к

Рис. 2.2

Пример программы

Задание: по экрану слева направо перемещается светофор с шагом по горизонтали од-

на позиция, а по времени - 0.5 сек. На каждом шаге меняется активный цвет светофора.

14

н

Создание исходного изображения

Фиксация изображения на требуемое время

Изменение координат подвижной части

Закраска подвижной части цветом фона

Синтез подвижной части на новом месте

Нет

Проверка

Да

 

выхода из

 

 

цикла

к

Рис. 2.3

Блок-схема программы Данное задание может быть реализовано на основе, например, второго подхода, т.е. путем

смещения по экрану окна, в рамках которого на каждом шаге создается, а затем через 0.5 сек стирается изображение светофора. Блок-схема алгоритма, реализующего данный подход, дос-

таточно подробно отображена на рис. 2.2. Дополнительно внутри цикла с помощью перемен-

ной j производится смена активного цвета. Введен также внутренний цикл для упрощения ри-

сования контура светофора.

15

н

Создание исходного изображения

Фиксация изображения на требуемое времяна

Изменение координат окна

Очистка окна цветом фона

Синтез подвижной части в пределах окна

Нет

Проверка

Да

 

выхода из

 

 

цикла

к

Рис. 2.4

Листинг программы:

program semafor;

Uses

Crt;

var

i, j, k:byte; {переменные цикла}

begin

16

ClrScr; {начальная очистка экрана} j:=1; {номер активного света}

for i:=1 to 71 do {цикл перемещения окна} begin

TextColor(8); {задание цвета контура светофора} window(i, 9, i+9, 17); {установка окна на новое место} writeln('╔═══════╗'); {прорисовка контура светофора} for k:=1 to 6 do

writeln('║ ║); write('╚═══════╝');

window(i+1, 10, i+8, 16); {установка окна меньшего размера}

TextColor(4); {задание цвета верхнего фонаря}

GotoXY(1, 1);

writeln('┌┐'); {прорисовка верхнего фонаря} writeln('└┘');

TextColor(14); {задание цвета среднего фонаря} writeln('┌┐'); {прорисовка среднего фонаря} writeln('└┘');

TextColor(2); {задание цвета нижнего фонаря} writeln('┌┐'); {прорисовка нижнего фонаря} writeln('└┘');

case j of {закраска активного фонаря}

1:begin

TextColor(4);

GotoXY(1,2);

end;

2:begin

TexTColor(14);

GotoXY(1,4);

17

end;

3:begin

TextColor(2);

GotoXY(1,6);

end;

end; writeln('');

if j<3 then {смена номера активного фонаря} j:=j+1

else j:=1;

Delay(500); {задержка на требуемое время} window(i, 9, i+9, 17); {возврат к исходному окну}

ClrScr; {его очистка} end;

end.

Варианты задания

Создать программу, реализующую средствами псевдографики языка программирова-

ния TurboPascal следующее динамическое изображение:

1)на экране отображается понедельный по горизонтали календарь текущего месяца. Красная рамка движется по всем числам с интервалом в 1.1 сек;

2)на экране по горизонтали нарисованы 4 окошка. В каждом из них поочередно загорается свет с увеличивающимся интервалом от 1 до 4 сек;

3)на экране по горизонтали нарисован спидометр до 200 км/час. Максимальная скорость достигается за 25 сек., а затем падает до 80 км/час за 15 сек;

4)на экране рисуются оси координат, а затем в динамике 10о /сек символами * строится гра-

фик одного периода синусоиды с амплитудой 10 строк;

18

5) на экране вертикально нарисован градусник со шкалой от -20о до 60о. Температура на пер-

вом этапе поднимается от -10о до 30о за 12 сек, а затем за 10 сек падает до нуля; 6) нарисован перекресток, по которому движутся наперерез друг другу два автомобиля, при-

чем скорость у одного в два раза выше, чем у другого;

7)по экрану слева направо в течение 60 сек движется стрелка =>, причем скорость начала в два раза выше скорости хвоста;

8)по экрану справа налево в течение 20 сек движется столбик коричневого цвета, на каждом шаге увеличиваясь в высоту на одну строку, а затем происходит возврат в исходное состояние;

9)по периметру экрана с шагом в 0.4 сек движутся друг за другом три прямоугольника:

красного, зеленого и желтого цвета;

10)на экране нарисована вертикальная лестница желтого цвета. Перекладина красного цвета движется снизу вверх с шагом в 2 сек;

11)прямоугольник красного цвета, двигаясь по экрану справа налево с шагом 0.6 сек, тянет за собой двойную линию зеленого цвета;

12)на экране две башни: желтого цвета высотой в 15 строк и коричневого - в 1 строку. С дис-

кретом в 1 сек высота желтой башни уменьшается до единичной, а коричневой увеличивается

до 15 строк;

13)на экране нарисована буква Н высотой в 14 строк. Перекладина медленно несколько раз поднимается и опускается. При смене направления меняется цвет буквы;

14)на экране в левом верхнем и правом нижнем углах написано разным цветом «КГТУ». Ле-

вая надпись медленно опускается, а правая поднимается до края экрана в течение 13 сек;

15)фигура ┌┐, вращаясь по часовой стрелке со скоростью 90о/сек, совершает четыре оборота;

16)в прямоугольнике 12х14 коричневого цвета нарисован по центру прямоугольник 6х4 бело-

го цвета. Белый прямоугольник медленно перемещается до левой границы внешнего прямо-

угольника, а затем - до правой; 17) на экране нарисована стилизованная зеленая елочка. На ней загораются и гаснут три крас-

ные звездочки с интервалом 1 сек, а елочка перемещается сверху экрана вниз; 18) две рамки, первоначально находящиеся в правом нижнем и левом верхнем углах экрана,

перемещаются по диагонали навстречу друг другу до полного совпадения с дискретом 0.7

сек/шаг;

19

19)вдоль экрана нарисован забор одного цвета, а за ним перемещающийся прямоугольник другого цвета. Дискрет перемещения – 2 символа/сек;

20)прямоугольник высотой в 12 строк, в котором написано слово «Информация», движется медленно по экрану справа налево, а слово движется сверху вниз прямоугольника;

21)на экране отображается понедельный по вертикали календарь текущего месяца. Красная рамка движется по всем числам с интервалом в 1.5 сек;

22)нарисована в профиль тумба письменного стола, из которой по очереди выдвигаются на два шага и возвращаются на место четыре ящика с дискретом 0.9 сек;

23)на экране надпись КГТУ белого цвета высотой 15 строк. С дискретом 0.7 сек. буквы ме-

няют поочередно цвет на красный и наоборот; 24) электронный секундомер. Высота цифр – 12 строк. Возможность запуска, останов и уста-

новки в ноль; 25) на экране нарисован путь вида высотой 12 строк и длиной 40 знакомест. По нему про-

ползает красный квадратик за 30 сек; 26) на экране прямоугольник высотой 17 пикселей и шириной 39 пикселей. После запуска

движения вертикальные стороны начинают сдвигаться до превращения прямоугольника в прямую линию за 15 сек. Затем идет возврат в исходное состояние и повторение за то же вре-

мя подобного движения вертикальных сторон.

Выполнение лабораторной работы

1.Получить задание у преподавателя.

2.Согласовать с преподавателем алгоритм решения задачи.

3.Написать и отладить на компьютере программу, реализующую требуемое изображе-

ние.

4.Результат работы программы продемонстрировать преподавателю.

5.Напечатать листинг программы.

Содержание отчета

Отчет включает:

20

1)содержание задания;

2)блок-схему программы;

3)листинг программы.

Контрольные вопросы

1.Каким образом реализуется в языке TurboPascal задержка во времени?

2.Для чего используется динамическое изображение, создаваемое на экране компью-

тера?

3.Чему равняется дискрет перемещения изображения по горизонтали и вертикали в символьном режиме работы компьютера?

4.Каким образом можно стереть изображение на экране компьютера?

5.Можно ли средствами псевдографики нарисовать на экране компьютера треуголь-

ник?

Рекомендуемая литература

Смотри литературу, рекомендованную к лабораторной работе №1.

.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]