Нарисовать дерево - PascalABC.NET

Узнай цену своей работы

Формулировка задачи:

Нужно нарисовать Дерево,Елка,Дерево.Все должно быть в одном окне.

Решение задачи: «Нарисовать дерево»

textual
Листинг программы
uses graphabc;
 
const
  maxTree = 3;
  minFern = 1;
 
procedure DrawLine(x, y: Integer; l, u: Real);
begin
  if l < 10 then SetPenColor(clGreen) else SetPenColor(clBrown);
  Line(x, y, Round(x + l * cos(u)), Round(y - l * sin(u)));
end;
 
procedure DrawTree(x, y: Integer; l, u: real);
begin
  if l > maxTree then
  begin
    l := l * 0.7;
    DrawLine(x, y, l, u);
    x := Round(x + l * cos(u));
    y := Round(y - l * sin(u));
    DrawTree(x, y, l, u + pi / 4);
    DrawTree(x, y, l, u - pi / 6);
  end;
end;
 
procedure DrawFern(x, y: Integer; l, u: real);
begin
  if l > minfern then 
  begin
    DrawLine(x, y, l, u);
    x := Round(x + l * cos(u));
    y := Round(y - l * sin(u));
    Drawfern(x, y, l * 0.45, u - 14 * pi / 30);
    Drawfern(x, y, l * 0.45, u + 14 * pi / 30);
    Drawfern(x, y, l * 0.73, u + pi / 30);
  end;
end;
 
begin
  Window.SetSize(800, 600);
  DrawTree(ScreenWidth div 14, ScreenHeight div 3, 80, pi / 2); // Дерево
  DrawFern(ScreenWidth div 5, ScreenHeight div 3, 90, pi / 2); // Елка
  DrawTree(ScreenWidth div 3, ScreenHeight div 3, 80, pi / 2); // Дерево
end.

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

В этом коде рисования дерева и ели на графической панели используются две процедуры: DrawLine и DrawTree (DrawFern для ели).

  1. Процедура DrawLine принимает четыре аргумента: x, y: Integer; l, u: Real.
    • x и y - координаты начальной точки линии.
    • l - длина линии.
    • u - угол линии относительно горизонтали. Сначала проверяется, является ли длина линии меньше 10. Если это так, то цвет пера устанавливается на зеленый, иначе на коричневый. Затем вызывается функция Line для рисования линии с заданными параметрами.
  2. Процедура DrawTree принимает четыре аргумента: x, y: Integer; l, u: Real.
    • x и y - координаты начальной точки ствола дерева.
    • l - длина ствола дерева.
    • u - угол наклона ствола дерева относительно горизонтали. Если длина ствола дерева больше максимальной длины (maxTree), то длина ствола уменьшается до 70% от исходной длины, и рекурсивно вызывается функция DrawTree для рисования верхней и нижней ветвей дерева. Затем рекурсивно вызывается функция DrawTree для рисования двух боковых ветвей.
  3. Процедура DrawFern принимает четыре аргумента: x, y: Integer; l, u: Real.
    • x и y - координаты начальной точки линии.
    • l - длина линии.
    • u - угол линии относительно горизонтали. Если длина линии больше минимальной длины (minFern), то рекурсивно вызывается функция DrawFern для рисования двух боковых линий с уменьшенной длиной, и рисуется центральная линия. В основной части программы сначала устанавливаются размеры окна (800 на 600 пикселей), затем вызывается функция DrawTree для рисования первого дерева, затем функция DrawFern для рисования ели, и, наконец, функция DrawTree для рисования второго дерева.

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


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

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

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