Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебник.docx
Скачиваний:
36
Добавлен:
21.12.2018
Размер:
2.15 Mб
Скачать

Перенос и анимация геометрических фигур

Задача:

Описать на языке программирования Pascal с помощью модуля graph алгоритм переноса и анимации геометрических фигур.

Описание переменных:

x, y – координаты точки.

Алгоритм решения задачи:

Точка на плоскости задается координатами x1, y1. При переносе ее положение определяется новыми координатами x2, y2, где

x2 = x1 + dx

y2 = y1 + dy

Так как графический объект представляет собой множество точек, то его можно переносить, применяя уравнение переноса к каждой точке.

Алгоритм переноса

  1. Установить цвет.

  2. Нарисовать фигуру.

  3. Подождать определенный промежуток времени.

  4. Зарисовать фигуру цветом фона экрана.

  5. Изменить координаты на dx и dy.

  6. Установить цвет.

  7. Нарисовать фигуру.

Используя правила переноса, можно моделировать движение объекта на экране. Для этого необходимо сначала определить направления движения: по горизонтали (для координаты x) и/или по вертикали (для координаты y). Для организации движения используется циклическая конструкция, зависящая от выбранного шага (сдвига).

Алгоритм движения по горизонтали

  1. Задать начальное значение переменной x – значение сдвига по оси.

  1. Пока x меньше конечного значения, выполнять следующую последовательность действий.

  1. Установить цвет.

  1. Нарисовать фигуру.

  1. Выполнить задержку.

  1. Зарисовать фигуру цветом фона экрана.

  1. Изменить значение x на величину сдвига.

Программа на языке Паскаль:

uses graph,crt;

var

g,h:integer;

x,y:integer;

begin

g := detect;

initgraph(g,h,'');

setcolor(10);

x:=100;

y:=200;

moveto(x,y); lineto(x+300,y); lineto(x+150,y-150); lineto(x,y);

delay(2000);

setcolor(0);

moveto(x,y); lineto(x+300,y); lineto(x+150,y-150); lineto(x,y);

setcolor(10);

x:=x+200;

y:=y+150;

moveto(x,y); lineto(x+300,y); lineto(x+150,y-150); lineto(x,y);

delay(1000);

x := 0;

while x < 300 do begin

setcolor(12);

rectangle(0+x,400,300+x,450);

delay(50);

setcolor(0);

rectangle(0+x,400,300+x,450);

x := x + 2

end;

setcolor(12);

rectangle(0+x,400,300+x,450);

readln

end.

Примечания:

В основе изменения графической информации лежат три основных преобразования: перенос, поворот и масштабирование. Эти три преобразования позволяют создавать статические и динамические геометрические изображения. При этом при построении графического изображения на экране монитора необходимо помнить, что система координат для графического режима отличается от обычной декартовой системы координат: ось 0Y направлена вниз, ось 0X - вправо, так что начало координат находится в левом верхнем углу экрана.

Окна в crt. Программа для угадывания числа

Задача:

Используя возможности модуля crt, оформить выводимую на экран информацию.

Программа на языке Паскаль:

uses crt;

var i,k,n,x: byte;

begin

clrscr;

randomize;

i := random(10);

window(20,5,60,7);

textbackground(blue);

clrscr;

textcolor(lightgray);

k := 0;

gotoxy(4,2);

write('Введите число: ');

x := 19;

repeat

gotoxy(x,2);

readln(n);

k := k + 1;

x := x + 2

until i = n;

window(20,9,60,11);

textattr := 4 shl 4 + 14;

clrscr;

gotoxy(4,2);

writeln('Угадано с ', k, '-ой попытки');

readln

end.

Примечания:

Процедура window задает окно, которое определяется координатами верхнего левого и правого нижнего углов. Все дальнейшие действия применяются по отношению к текущему окну. Также меняется и координатная сетка.