Программирование на языке Turbo Pascal


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


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.

                                                       



Содержание раздела