Графика (создание системы многоугольников) - Turbo Pascal
Формулировка задачи:
Сделать систему блуждающих закрашенных многоугольников.
(5 штук). Цвета - по случайному закону, координаты центров правильных
многоугольников -случайны. Положение по углу - случайное. Число сторон и их длина задается в диалоге.
Еще, она должна быть выполнена с помощью объектов.
Решение задачи: «Графика (создание системы многоугольников)»
textual
Листинг программы
uses graph,crt; type mngl=object //описание объекта // поля x,y,n,a,c:integer;//координаты центра, кол.вершин, //длина стороны, цвет u:real; //угол //методы procedure Init(ax,ay,an,aa,ac:integer;au:real);//порождение объекта procedure Draw; //отрисовка procedure Newkoord(ax,ay:integer);//смена координат end; procedure mngl.Init(ax,ay,an,aa,ac:integer;au:real);//задаем параметры объекта begin x:=ax; y:=ay; n:=an; a:=aa; c:=ac; u:=au; end; procedure mngl.Draw;//рисуем var p:array[1..13] of pointtype;//массив точек i:byte; //счетчик r,f:real; //радиус, угол begin r:=a/2/sin(pi/n);//выразим радиус описанной окружности через длину стороны f:=u; //начальный угол равен исходному углу объекта for i:=1 to n+1 do //определяем координаты вершин по кругу begin p[i].x:=x+round(r*cos(f)); p[i].y:=y-round(r*sin(f)); f:=f+2*pi/n; //через 2*pi/n радиан end; setcolor(c);//задаем цвет setfillstyle(1,c);//стиль заливки fillpoly(n+1,p);//закрашенный полигон end; procedure mngl.Newkoord(ax,ay:integer); begin x:=ax; //новые координаты y:=ay; end; const n=5;//5 объектов var k,d,x,y,i:integer; //кол.вершин, длина стороны, координаты, счетчик m:array[1..n] of mngl;//массив объектов begin clrscr;//очистим экран от старых данных repeat //и введем данные write('Chislo storon 3-12 k='); readln(k); until k in [3..12]; repeat write('Dlina storon 10-50 d='); readln(d); until d in [10..50]; randomize; //генерация случайных чисел initgraph(x,y,'');//инициализация графического режима for i:=1 to n do //порождение объектов m[i].init(50+random(getmaxX-100),50+random(getmaxY-100), k,d,9+random(7),2*pi*random); m[i].Draw; repeat //повторяем в цикле cleardevice;//очистка графического окна for i:=1 to n do m[i].Draw; //рисование объектов delay(500); //задержка 0.5 секунды for i:=1 to n do //новые координаты begin m[i].x:=50+random(getmaxX-100); m[i].y:=50+random(getmaxY-100); end; until keypressed; //пока не нажата клавиша end.
Объяснение кода листинга программы
- В начале кода подключаются необходимые библиотеки graph и crt.
- Затем определяется тип объекта mngl, который содержит поля x, y, n, a, c: integer; u: real; и методы Init, Draw, Newkoord.
- В методе Init задаются параметры объекта mngl.
- Метод Draw рисует объект mngl.
- В методе Newkoord изменяются координаты объекта mngl.
- Константа n определяет количество объектов mngl.
- Переменная m содержит массив объектов mngl.
- В цикле порождаются объекты mngl с заданными параметрами.
- После этого вызывается метод Draw для каждого объекта mngl.
- Цикл повторяется до тех пор, пока не будет нажата клавиша.
- После каждого цикла вызывается cleardevice для очистки графического окна.
- В конце кода выводится сообщение об окончании работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д