рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

Реализация имитации движения графических объектов

Реализация имитации движения графических объектов - раздел Полиграфия, Построение простейших графических изображений Создать Видимость Движения На Экране Можно Двумя Способами. Первый Способ...

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

Задача 1. Организовать имитацию движения по экрану компьютера автомобиля.

Program automoto;

Uses Graph;

Var u,gm,gd:integer;

BEGIN

gd:=detect;

initgraph(gd,gm,’’);

if graphresult<>0 then halt(1);

setviewport(1,1,600,450,true);

setbkcolor(lightgray); setcolor(brown);

line(1,401,700,401);{нарисовали дорогу}

u:=1;

while u<= 600 do

begin

setcolor(darkgray);

rectangle(40+u,315,90+u,350); {кабина машины}

setfillstyle(1,darkgray);

bar(5+u,350,120+u,390); {кузов машины}

setfillstyle(1,yellow);

setcolor(yellow);

line(121+u,360,160+u,400); line(160+u,400,200+u,400); {свет от фар машины }

line(200+u,400,121+u,360); floodfill(180+u,399,yellow);

pieslice(40+u,385,0,360,15); pieslice(90+u,385,0,360,15); {нарисуем колеса}

delay(30);

setfillstyle(1,lightgray); bar(5+u,300,210+u,400); {очистка места расположения машины}

u:=u+3

end;

readln;

closegraph

END.

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

Для хранения фрагмента удобнее всего использовать динамическую область памяти. Получить размер памяти в байтах, необходимой для сохранения образа фрагмента, позволяет функция ImageSize(X1,Y1,X2,Y2: integer): word. Здесь X1,Y1 и X2,Y2 – координаты верхнего левого и нижнего правого углов прямоугольника. Если полученный размер памяти больше 64Кб, то значение ImageSize=0, a GraphResult= -11. Чтобы этого избежать, следует сохранять изображение по частям. Полученный с помощью функции ImageSize размер памяти применяют в качестве входной информации для процедуры GetMem(p,Size), которая выделяет указанный объем памяти в динамической области: Здесь р – указатель на область памяти, Size – ее размер.

Процедура GetImage(X1,Y1,X2,y2:integer; var BitMap:word);сохраняет образ фрагмента в памяти, где X1,Y1,X2,Y2 – координаты фрагмента, BitMap – переменная, которая указывает, где сохраняется образ изображения.

Процедура PutImage(X,Y:integer; var BitMap, Mode:word); восстанавливает сохраненный в буфере BitMap прямоугольник, левый верхний угол которого задается координатами X,Y. Параметр Mode задает режим вывода изображения.

Задача 1. Построить на экране компьютера башню, имитируя процесс ее построения снизу вверх.

Uses Graph;

Var P:pointer; {указатель на область}

Size:Word; {размер области}

X1,Y1:Word; {координаты начальной точки}

gd,gm:integer;

Begin

gd:=detect;

InitGraph(gd,gm,’’);

IF GraphResult<>0 THEN Halt(1);

SetViewPort(0,0,640,80,TRUE);

ClearViewPort;

SetBkColor(black); SetColor(yellow);

SetLineStyle(0,1,Thickwidth);

Rectangle(120,400,200,440); {рисуем первый кирпич башни}

Size:=ImageSize(120,400,200,400); {определяем размер области}

GetMem(p,Size); {выделяем память для области}

GetImage(120,400,200,440,P^); {сохраняем область в памяти}

Y1:=400;

WHILE Y1>=40 DO

begin

X1:=120;

WHILE X1<=440 DO

Begin PutImage(X1,Y1,p^,CopyPut); {строим башню}

Delay(200); X1:=X1+80; end;

Y1:=Y1-40

end;

WHILE X1<=440 DO {строим верх башни}

Begin PutImage(X1,Y1,p^,CopyPut); {CopyPut=0 – режим копирования изображений}

X1:=X1+160; end;

SetColor(black);

Line(200,120,280,120); {строим окна в башне}

Line(360,120,440,120);

Readln;

CloseGraph

End.

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

  1. Назначение графического режима. Расположение графических драйверов и их характеристики.
  2. Какая процедура инициализирует графический режим? Формат представления и параметры.
  3. Назовите процедуры и функции управления окнами и экраном.
  4. Назовите процедуры и функции управления цветом и фоном.
  5. Какие простейшие графические изображения представлены процедурами и функциями? Форматы представления.
  6. Как осуществляется вывод текста в графическом режиме?

– Конец работы –

Эта тема принадлежит разделу:

Построение простейших графических изображений

Работа в графическом видеорежиме... Инициализация графического режима... Управление экраном и окнами...

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Реализация имитации движения графических объектов

Что будем делать с полученным материалом:

Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Все темы данного раздела:

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

InitGraph (<драйвер>:integer; <режим>:integer;<путь к файлу>:string);.
Для инициализации графического режима с автоматическим распознаванием драйвера и режима, достаточно присвоить переменной, отвечающей за драйвер, константу Detect или 0

Управление экраном и окнами
В графическом режиме поддерживается концепция окон. Окно представляет собой прямоугольную область экрана со своей относительной системой координат. По умолчанию окно занимает весь

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

Отображение точки
Какие бы изображения не выводились на экран, все они построены из точек. Процедура PutPixel(X,Y:integer; Color:word); отображает точку на экране, где Х и Y –

Отображение отрезков прямых линий
Процедура Line(X1,Y1,X2,Y2:integer); выводит на экран отрезок прямой линии. Здесь X1,Y1 – координаты начальной точки, а X2,Y2 – координаты конечной точки отрезка.

Построение прямоугольников
Процедура Rectangle(X1,Y1,X2,Y2:integer); строит изображение прямоугольника на плоскости. Здесь X1,Y1 – координаты левого верхнего угла, X2,Y2 – координаты правого ни

Построение дуг, эллипсов и окружностей
Процедура Arc(X,Y:integer; a1, a2,R:word); строит дугу. Здесь X,Y – центр окружности дуги, a1, a2 – начальный и конечный углы, отсчитываемые от горизонтальной оси про

Управление курсором
Чтобы построить изображение, необходимо обязательно указать начальную позицию. В текстовом режиме эту позицию определяет положение курсора, который размещается каждый раз за последним отображенным

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

Алгоритм построения окон и статических объектов в них
Задача 1. Построить два окна на одном экране. В первом окне вывести разноцветные концентрические окружности, радиус которых пропорционально возрастает, и вложенные одноцветн

Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • Популярное
  • Облако тегов
  • Здесь
  • Временно
  • Пусто
Теги