Графика (создание системы многоугольников) - 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.

Объяснение кода листинга программы

  1. В начале кода подключаются необходимые библиотеки graph и crt.
  2. Затем определяется тип объекта mngl, который содержит поля x, y, n, a, c: integer; u: real; и методы Init, Draw, Newkoord.
  3. В методе Init задаются параметры объекта mngl.
  4. Метод Draw рисует объект mngl.
  5. В методе Newkoord изменяются координаты объекта mngl.
  6. Константа n определяет количество объектов mngl.
  7. Переменная m содержит массив объектов mngl.
  8. В цикле порождаются объекты mngl с заданными параметрами.
  9. После этого вызывается метод Draw для каждого объекта mngl.
  10. Цикл повторяется до тех пор, пока не будет нажата клавиша.
  11. После каждого цикла вызывается cleardevice для очистки графического окна.
  12. В конце кода выводится сообщение об окончании работы программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4 из 5
Похожие ответы