Снова перевести с Турбо Паскаля на Паскаль АВС или Паскаль АВС.Нет - Pascal ABC
Формулировка задачи:
На турбо Паскаль красивая графика не хочет переходить в ПаскальАВС.Нет
нет функции linerel, как быть?
Решение задачи: «Снова перевести с Турбо Паскаля на Паскаль АВС или Паскаль АВС.Нет»
textual
Листинг программы
program derevo;
uses graphAbc;
function cx(length, angle:real):integer;
begin
cx:=round(length*cos(angle));
end;
function cy(length, angle:real):integer;
begin
cy:=round(length*sin(angle));
end;
var i,x,y:integer;
t:integer; { kolichestvo vlogennyh procedur }
alf:real; { ugol megdu stvolom i koordinatoi x }
len:real; { dlina stvola }
dx,dy:integer;
k,a,l:array[1..3] of real;
procedure tree; forward;
procedure branch(p:integer);
var x1,y1:integer;
begin
dx:=cx(len*k[p],alf);
dy:=cy(len*k[p],alf);
x1:=x+round(dx);
y1:=y+round(dy);
lineto(x1,y1);
len:=len*l[p];
alf:=alf+a[p];
x:=x1;
y:=y1;
tree;
len:=len/l[p];
alf:=alf-a[p];
dx:=cx(len*k[p],alf);
dy:=cy(len*k[p],alf);
x1:=x-round(dx);
y1:=y-round(dy);
lineto(x,y);
x:=x1;
y:=y1;
end;
procedure tree;
begin
if i>t then exit;
inc(i);
branch(1);
branch(2);
branch(3);
dec(i);
end;
begin
t:=7;
alf:=-pi/2;
len:=170;
k[1]:=1; a[1]:=pi/16; l[1]:=1/2;
k[2]:=1/2; a[2]:=-pi/6; l[2]:=1/2;
k[3]:=1/2; a[3]:=pi/6; l[3]:=1/2;
clearwindow(clAqua);//просто АВС
// clearwindow(clAquamarine);//АВС.net
setpencolor(clGreen);
x:=320;
y:=400;
moveto(x,y);
i:=1;
tree;
x:=170;
y:=370;
moveto(x,y);
i:=1;
tree;
x:=370;
y:=370;
moveto(x,y);
i:=1;
tree;
end.
Объяснение кода листинга программы
- Создается программа
derevo. - Используются единицы измерения
graphAbc. - Определяются функции
cxиcy, которые выполняют вычисления длины и угла соответственно. - Определяются переменные
i,x,y,t,alf,len,dx,dy,k,a,l. - Определяется процедура
tree, которая является основной процедурой программы. - В процедуре
treeвыполняется итерация, состоящая из двух частей:- Если значение переменной
iбольше значения переменнойt, то выход из цикла. - Увеличение значения переменной
i. - Вызов процедуры
branchс аргументом1. - Вызов процедуры
branchс аргументом2. - Вызов процедуры
branchс аргументом3. - Уменьшение значения переменной
i. - Обновление значений переменных
x,y,len,alf. - Выполнение линии с координатами
x,y. - Повторение шагов 6-8 для каждого поддерева.
- Если значение переменной
- В процедуре
treeустанавливается цвет шрифта на зеленый. - Устанавливаются координаты
xиyдля начала рисования. - Вызывается процедура
treeс аргументом7. - Устанавливаются координаты
xиyдля окончания рисования. - Устанавливается цвет шрифта на зеленый.
- Вызывается процедура
treeс аргументом170. - Устанавливаются координаты
xиyдля начала рисования. - Вызывается процедура
treeс аргументом370. - Устанавливаются координаты
xиyдля окончания рисования.