uses PTCCrt,PTCGraph;
var
gd,gm:integer;
x:char;
procedure tree (a,x,y,ls,df:integer);
var x1,y1,lsr,lsv1,lsv2,ng:integer;
begin
if df <> 1 then lsr:= (ls div df) + (ls*(random(3)*2-1) div 100)
else lsr:=ls;
x1 := round(x-sin(pi/180*a)*lsr);
y1 := round(y-cos(pi/180*a)*lsr);
line(x,y,x1,y1);
if df>1 then begin
ng:=((ls-lsr)*70 div 100);
lsv1:=random(round(sqrt(abs(sqr(ls-lsr)-((ls-lsr)*30 div 100))))-ng)+ng;
lsv2:=round(sqrt(abs(sqr(ls-lsr)-sqr(lsv1))));
if random(2)=1 then begin
tree (a+round(lsv1/(lsv1+lsv2+1)*32),x1,y1,lsv1,df-1);
tree (a-round(lsv2/(lsv1+lsv2+1)*32),x1,y1,lsv2,df-1);
end
else begin
tree (a-round(lsv1/(lsv1+lsv2+1)*32),x1,y1,lsv1,df-1);
tree (a+round(lsv2/(lsv1+lsv2+1)*32),x1,y1,lsv2,df-1);
end;
setcolor(white);
end;
end;
begin
gd:=10;
gm:=260;
initgraph(gd,gm,'');
randomize;
x:=readkey;
while x<>'a' do begin
tree(0,1024 div 2,768,1300,13);
x:=readkey;
cleardevice;
end;
closegraph;
end.
Что можно улучшить в этой программе?
Использую Free Pascal;
Модули PTCGraph и PTCCrt можно заменить на Graph и Crt
Пример работы:
Нажмите для просмотра прикрепленного файла