Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
4 Pascal1.doc
Скачиваний:
0
Добавлен:
06.01.2020
Размер:
3.95 Mб
Скачать

Тема №7: программирование на языке turbo-pascal. Основные графические операции языка turbo pascal. Составление программ с использование операторов графики.

ПРОГРАММНО - ДИДАКТИЧЕСКОЕ ОБЕСПЕЧЕНИЕ: ЭВМ типа IBM. Turbo-Pascal 5.

ЦЕЛИ И ЗАДАЧИ: Знакомство с операторами графики языка Turbo-Pascal. Выработка навыков работы в Turbo-Pascal. Решение практических задач с использованием операторов графики.

ТРЕБОВАНИЯ К ЗНАНИЯМ И УМЕНИЯМ:

Учащиеся должны знать:

  • Что такое графический режим;

  • Систему координат графического языка Turbo-Pascal;

  • Какие модули содержат графические процедуры (нестандартные операторы);

  • Основные операторы графики;

  • Как инициализировать и закрывать графический режим.

Учащиеся должны уметь:

  • Задавать координаты точек на экране монитора;

  • Грамотно инициализировать графический режим;

  • Правильно использовать операторы графики;

  • Составлять программы с использование операторов графики;

ПЛАН-СОДЕРЖАНИЕ УРОКА

Модули Turbo Pascal. Модуль crt. Модуль graph.

В языке Turbo Pascal основная часть процедур и функций находится в так называемых модулях:

  • Модуль crt, содержащий процедуры и функции, организующие связь с консолью компьютера. Консолью компьютера называется его монитор и клавиатура.

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

Работа Turbo Pascal может быть организована в двух режимах (экранах).

  • Текстовой экран, в котором могут отображаться только символы (25 строк по 80 символов в каждой).

  • Графический экран, в котором изображение представляется в виде точек, именуемых пикселями. Размер этого экрана зависит от типа монитора, чаще всего 640х480 пикселов. Нулевая точка системы координат находится в верхнем левом углу экрана. Это связано с тем, что в процессе создания изображения на экране, электронный луч в кинескопе движется так же, как мы читаем текст – из верхнего левого угла слева направо, и сверху вниз. Координаты точек могут принимать только целые значения.

Инициализация графического режима.

Для инициализации графического режима необходимо подключение модуля graph, кроме того объявить две целочисленные переменные gd, gm, которы используются при инициализации режима. Собственно инициализация происходит при записи в первую из переменных номер драйвера, соответствующий автоматически определенному типу монитора (gd:=detect;). А так же при выполнении процедуры initgraph(gd,gm,'');. При этом в переменную gm записывается номер графического режима, а '' обозначает, что поиск графического драйвера надо проводить в текущем каталоге. Пример инициализации графического режима:

uses crt, graph; {подключение модулей}

var gd,gm:integer;

begin

clrscr;

gd:=detect; initgraph(gd,gm,'');

. . . . . . . . . . . . . . . . . .

При использовании графического режима, процедуры ввода/вывода текстового режима (write, writeln и read, readln) не работают. Перед их использование сначала производится закрытие графического режима с помощью процедуры closegraph.

Кроме того, для задания графического режима можно использовать технические характеристики, которые можно самим определить. Для определения типа вашего монитора (функция getdrivername), максимальных значений его координат по осям x (функция getmaxx) и y (функция getmaxy), а также максимального номера цвета (функция getmaxcolor) можно использовать следующую программу:

program monitor;

uses crt, graph; {подключение модулей}

var gd,gm,xmax,ymax,maxcolor:integer;

begin

clrscr;

gd:=detect; initgraph(gd,gm,'');

{автоматическое определение типа монитора и запись номера драйвера в переменную gd; переменной gm присваивается номер соответствующего графического режима, а два апострофа означают, что поиск графического драйвера надо производить в текущем каталоге}

xmax:=getmaxx; ymax:=getmaxy; maxcolor:=getmaxcolor;

closegraph; {Закрытие графического экрана}

writeln ('xmax=',xmax,' ymax=',ymax,' maxcolor=',maxcolor,' ',getdrivername);

repeat until keypressed; end.

Для монитора типа SVGA программа выдаст строку:

xmax=639 ymax=479 maxcolor=15 EGAVGA

Графические процедуры.

  • Процедура setcolor (c) производит установку текущего цвета, процедура setbkcolor (c) производит установку цвета фона. c – номер или наименование цвета.

0 – black

4 – red

8 – darkgray

12 – lightred

1 – blue

5 – magenta

9 – lightblue

13 – lightmagenta

2 – green

6 – brown

10 – lightgreen

14 – yellow

3 – cyan

7 – lightgray

11 – lightcyan

15 – white

  • Процедура setfillstyle (n, c) устанавливает тип заливки для замкнутой фигуры. n – номер или наименование шаблона заполнения, c – цвет заполнения.

  • Процедура floodfill (x, y, c) после установления типа заливки производит заполнение замкнутой фигуры. x, y – координаты какой-либо точки внутри этой фигуры, c – цвет границы заполняемой фигуры.

0

emptyfill

сплошная заливка текущим цветом фона

1

solidfill

сплошная заливка текущим цветом вывода

2

linefill

штриховка горизонтальными линиями --------

3

ltslashfill

штриховка линиями вида ////

4

slashfill

штриховка утолщёнными линиями вида ////

5

bkslashfill

штриховка линиями вида \\\\

6

ltbkslashfill

штриховка утолщёнными линиями вида \\\\

7

hatchfill

заливка узором вида ++++++

8

xhatchfill

заливка узором вида ххххххх

9

interleavefill

частые пересекающиеся штрихи

10

widedotfill

заливка узором – редкие точки

11

closedotfill

заливка узором – частые точки

12

userfill

шаблон пользователя

  • Процедура setlinestyle (s, p, t) позволяет изменить стиль линии. S – номер или наименование стиля, p – задаёт шаблон линии только в том случае, если параметр s=4, в остальных случаях p=0, t – задаёт толщину линии и может иметь следующие значения: normwidth=1 (нормальная толщина – установлена по умолчанию); thickwidth=3 (утолщённая линия).

0

solidln

сплошная линия – установлена по умолчанию

1

dottedln

точечная линия

2

centerln

штрих-пунктирная линия

3

dashedln

пунктирная линия

4

userbitln

Линия, заданная пользователем

  • Процедура line (x1, y1, x2,y2) проводит текущим цветом отрезок прямой между точками с координатами x1, y1 и x2, y2.

  • Процедура putpixel (x, y, c) рисует точку (пиксель) с координатами x, y цвета c.

  • Процедура getpixel (x, y) позволяет определить цвет точки с координатами x, y.

  • Процедура circle (x, y, r) рисует текущим цветом окружность с центром в точке имеющей координаты x, y и радиусом r.

  • Процедура arc (x, y, nangl, kangl, r) рисует дугу окружности с радиусом r, с центром в точке имеющей координаты x, y, начальный угол дуги nangl, заданный в градусах, конечный угол дуги kangl, заданный в градусах (с отсчётом против часовой стрелки!!!).

  • Процедура pieslice (x, y, nangl, kangl, r) используя те же параметры, что и процедура arc рисует текущим цветом сектор круга, закрашенный в текущем стиле. Чувствительна к масштабированию по осям.

  • Процедура ellipse (x, y, nangl, kangl, rx, ry) рисует текущим цветом дугу эллипса, с центром в точке имеющей координаты x, y. Начальный угол дуги - nangl, заданный в градусах, конечный угол дуги - kangl, заданный в градусах, rx радиус эллипса по оси x, ry радиус - по оси y (если nangl=0, а kangl=360, рисуется эллипс).

  • Процедура sector (x, y, nangl, kangl, rx, ry) используя те же параметры, что и процедура ellipse рисует текущим цветом сектор эллипса, закрашенный в текущем стиле.

  • Процедура rectangle (x1, y1, x2, y2) рисует текущим цветом прямоугольник с координатами верхнего левого угла x1, y1 и координатами правого нижнего угла x2, y2, при этом x1<=x2 и y1<=y2.

  • Процедура bar (x1, y1, x2, y2) рисует текущим цветом прямоугольник, закрашенным в текущем стиле.

  • Процедура bar3d (x1, y1, x2, y2, d, v) рисует текущим цветом параллелепипед, закрашенный в текущем стиле. Координаты задают левый верхний и правый нижний углы передней грани. Ширина боковой d грани исчисляется числом пикселей по горизонтали. Если задают выражение v=true, верхняя грань «видна», иначе она не вычерчивается (случай, когда параллелепипед «накрыт» другим изображением).

  • Процедура lineto (x, y) проводит текущим цветом линию из текущей позиции в точку с заданными координатами, перемещая в неё и текущую позицию.

  • Процедура moveto (x, y) устанавливает новые координаты текущей позиции.

  • Процедуры getx и gety выдают текущее положение курсора по координатам x и y соответственно.

  • Процедура linerel (dx, dy) изменяя на величину dx и dy координату x и y текущей позиции, проводит текущим цветом линию между старой и новой позицией.

  • Процедура moverel (dx, dy) изменяет координаты x и y текущей позиции на величину dx и dy соответственно.

  • Процедура outtextxy (x, y, ‘text’) для вывода текста в графическом режиме, процедура перемещает текущую позицию в точку с координатами x, y и выводит строку text, кроме того, можно вместо текстовойконстанты использовать строковую переменную.

  • Процедура settextstyle (sh, n, r) позволяет манипулировать стилем текста. Sh (шрифт) - имеет значения 0..4 (0 – матричный шрифт; 1 – триплекс; 2 – мелкий; 3 – прямой; 4 – готический, 1 – 4 для кириллицы не поставляются!!!). N (направление) - имеет значение 0 – текст идёт слева направо и 1 – текст идёт снизу вверх, по вертикали, символы «положены на бок». R (размер шрифта) - коэффициент увеличения 1..10.

  • Задержка изображения на экране на доли секунды delay(5000);

  • Очистка графического экрана Cleardevice;

Примеры операторов графики:

  • Линия - line(200,200,400,400);

  • Круг - circle(500,300,50);

  • Прямоугольник rectangle - (100,100,600,400)

  • Квадрат - bar(50,50,200,100);

  • Куб - bar3d(200,200,250,300,40,topon);

  • Эллипс - ellipse(500,100,0,360,10,30);

  • Изменение цвета фона - setbkcolor(0);

  • Изменение цвета переднего плана - setcolor(5);

  • Точка - putpixel(100,100,14);

  • Текст в графическом режиме - outtextxy(300,300,'ura');

  • Заливка замкнутого контура:

setfillstyle(1,14);

floodfill(500,300,15);

Принципы организации движения графических фигур:

Можно оживить изображение на экране, если воспользоваться принципами анимации: нарисовать, стереть (нарисовать цветом фона), нарисовать в новом месте и т.д.