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

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

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

program graphsb;

uses graph, crt;

var gd,gm,c:integer;

begin

gd:=detect;

initgraph (gd,gm,'');

setbkcolor (1); {Устанавливает цвет фона (1 - blue)}

setcolor (14); {Устанавливает текущий цвет (14 - yellow)}

circle (100,120,50); {Рисует окружность}

putpixel (100,120,14); {Рисует точку}

c:=getpixel (100,120); {Узнаёт цвет пикселя, в указанной координате}

setcolor (14);

line (100,150,200,200); {Рисует отрезок}

setcolor (1);

rectangle (250,100,350,70); {Рисует прямоугольник}

setfillstyle (5,14); floodfill (270,75,1); {Заливка прямоугольника по шаблону}

bar (400,400,500,350); {Рисует прямоугольник, закрашенный в текущем стиле}

setcolor (10); setlinestyle (0,0,3);

bar3d (100,300,200,250,15,true); {Рисует параллелепипед, закрашенный в текущем стиле}

setcolor (10); setlinestyle (1,0,3);

line (150,100,320,170); {Рисует утолщённую точечную линию}

setcolor (10); setlinestyle (0,0,3);

arc (300,350,0,175,70); {Рисует дугу окружности. Линия утолщённая.}

setcolor (9); setlinestyle (0,0,0);

ellipse (490,200,0,360,50,100); {Рисует эллипс. Нормальная толщина линии}

setfillstyle (7,14); floodfill (490,200,9);{Заливка эллипса по шаблону}

setcolor (12); setlinestyle (0,0,3);

ellipse (380,200,25,150,50,100); {Рисует дугу эллипса. Линия утолщённая}

sector (330,190,220,340,100,30); {Рисует закрашенный сектор эллипса}

setcolor (9);

pieslice (300,450,30,170,50); {Рисует круговой сектор}

setfillstyle (3,14); floodfill (300,445,9); {Заливка сектора}

setcolor (10);

lineto (550,450); {Проводит отрезок из текущей позиции в точку с координатами 550,450}

moveto (120,400); {Устанавливает курсор в точку с координатами 120,400}

setcolor (12);

lineto (350,250);

setcolor (14); settextstyle (4,0,4); {Стиль текста}

outtextxy (250,25,'Abstraction'); {Вывод текста}

repeat until keypressed;

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

clrscr; window (5,5,70,100); {Создание текстового окна}

textbackground (9); textcolor (15);

clrscr; writeln ('Цвет пикселя -',c);

writeln ('До свидания! Для завершения работы нажмите Enter.');

readln; end.

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

program graphtext;

uses crt,graph;

var gd,gm,i,j:integer;

begin

gd:=detect;

initgraph (gd,gm,''); {Инициализирует графическую систему}

outtextxy (1,1,'Mama'); {Выводит строку с позиции, имеющей координаты 1,1}

for i:=1 to 100 do

for j:=1 to 100 do

begin

if getpixel (i,j)=15 then

begin

setcolor (10);

circle (100+i*12,100+j*12,5);

setfillstyle (9,9); floodfill (100+i*12,100+j*12,10);

delay (700);

end;

end;

repeat until keypressed;

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

end.

Дополнительная информация.

Вывод на экран ломаной линии или закрашенного контура

DrawPoly(<количество точек>,<массив координат точек>); - выводит не экран в графическом режиме ломаную, соединяющую заданные координатами точки.

FillPoly(<количество точек>,<массив координат точек>); - выводит на экран закрашенный многоугольник, координаты вершин которого задаются в массиве.

Массив координат точек – одномерный массив типа Integer, где нечетные элементы содержат горизонтальные элементы (Х), а четные – вертикальные (У).

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

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

Пример использования операторов:

Uses crt,graph;

const a:array[1..6]of integer=(100,100,300,200,400,400);{задание координат массива как констант}

var gd,gm,i:integer;{описание переменных для объявления графического режима и параметра цикла}

begin

gd:=detect; {объявления графического режима }

initgraph(gd,gm,'');

setcolor(5); {задание цвета линий}

setfillstyle(1,2);

fillpoly(3,a);{рисование закрашенного треугольника}

for i:=1 to 6 do{цикл для изменения массива с координатами точек}

if i mod 2 =0 then a[i]:=a[i]-80 else a[i]:=a[i]+100;

drawpoly(3,a);{рисование угла}

repeat until keypressed;

end.