Сделай Сам Свою Работу на 5

FreeMem(P1, Size); FreeMem(P2, Size); CloseGraph





End.

В приведенной программе в память заносятся два образа человечка с разным положением ног. Экран очищается и в цикле происходит поочередное извлечение образов со смещением по оси "х". Каждое изображение хранится на экране 0, 05 с. , затем исчезает, вследствие перерисовки в режиме XorPut.

 

 

Практическое задание N 1. 63

 

1. Создать перемещающуюся слева направо фигурку чередованием двух или трех образов с озвучиванием перемещения. Варианты фигурок:

- катящееся колесо со спицами,

- шагающий ослик,

- летящая со взмахами крыльев птица,

- летящий вертолет (вид сверху),

- гребец в лодке,

- прыгающий мяч, деформирующийся при ударе.

2. Создать картину: перемещение машины (прямоугольника) желтого цвета на фоне гор (треугольников) синего, темно-серого, фиолетового, зеленого цветов. Определить заранее цвет машины на фоне гор, и вывести названия этих цветов над горами.

3. Создать картину: перемещение самолета (треугольника) белого цвета на фоне облаков (эллипсов) голубого, ярко-голубого, ярко-синего, ярко-серого цветов. Определить заранее цвет самолета на фоне облаков, и вывести названия этих цветов над облаками.



4. Создать "бегущую строку" ( в графическом режиме ). Для этого необходимо вывести на экран надпись и в цикле выводить в другой области экрана часть буфера от 0 до Size и от Size до 0, одновременно изменяя координату "х" начала вывода строки от GetMaxX до нуля.

 

 

Мультипликация с чередованием видеостраниц

 

 

Для изменения всего изображения на экране необходимо быстро заменять рисунок на экране другим, готовым рисунком. Это обеспечивается возможностью рисования "вслепую" - на невидимой странице экрана. При этом во время просмотра одной видеостраницы, на другой (невидимой, но активной) происходит процесс рисования. Затем страницы переключаются и невидимая страница активизируется для рисования.

Для качественных графических адаптеров можно установить режимы работы с несколькими графическими страницами, см. таблицу на стр.

 

Страницы переключаются для просмотра на экране процедурой:

 
 


SetVisualPage(N);

 

где N - номер страницы. По умолчанию видна и активна страница с N=0.



 

Страница активизируется для рисования процедурой:

 
 


SetActivePage(N);

 

Напомним, что вывод рисунков можно проводить и на невидимую страницу.

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

 

 

Приведем пример фрагмента программы - мультипликации с использованием чередования кодовых страниц (режим двух видеостраниц).

k:= 2;{ количество кодовых страниц }

Repeat

for i:= 1 to 100 do

begin j:= i mod k;{ j - номер кодовой страницы }

SetActivePage(j);{ активизируем страницу без ее показа }

ClearDevice;{ стираем старый рисунок }

SetfillStyle(1, i div 15 +1); { изменение цвета заполнения через 15 стр. }

Bar(1, 1, i+10, i+5);{ строим новый рисунок }

SetVisualPage(j); delay(40) { показываем страницу }

End

Until KeyPressed;

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

 

Практическое задание N 1. 64

 

1. С использованием двух видеостраниц составить программу вывода на экран картины: приближение гор разного цвета ( увеличивать размер гор ).

2. С использованием двух видеостраниц составить программу вывода на экран картины: приближение облаков разного цвета.



3. Создать "бегущую строку" в графическом режиме с выводом части буфера (надписи) на невидимую страницу и сменой видеостраниц.

 

 

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

 

 

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

dx:= 1; dy:= 1;{ пошаговые перемещения по осям X и Y }

x:= 100; y:= 100;{ начальные координаты смещаемого образа }

Xmax:= GetMaxX; Ymax:= GetMaxY;

Repeat

PutImage(x, y, P1^, 1);{ выводим образ (запомненный ранее в P1^) }

xold:= x; yold:= y;{ запоминаем координаты }

c:= readkey;{ считываем код клавиши в переменную типа char }

if c = #0 then c:= readkey;

case c of{ анализируем код нажатой клавиши }

#72: if y > 1 then y:= y - dy;{ смещение вверх }

#75: if x > 2 then x:= x - dx;{ смещение влево }

#80: if y < Ymax-100 then y:= y + dy;{ смещение вниз }

#77: if x < Xmax-20 then x:= x + dx end; { смещение вправо }

PutImage(xold, yold, P1^, 1){стираем образ }

Until c = #27;{ при нажатии клавиши Esc перемещение прекратится }

 

 

Практическое задание N 1. 65

 

1. Перемещать по экрану стрелку-указатель под управлением курсорных клавиш с озвучиванием движения разной частотой звука в зависимости от направления перемещения.

2. Выполнить п. 1 так, чтобы стрелка всегда указывала направление своего перемещения.

Примечание: дополнить операторы перемещения стрелки в диагональных направлениях.

 

 

 








Не нашли, что искали? Воспользуйтесь поиском по сайту:



©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.