program dynamic_mandelbrot;
uses graph,crt;
type zaznam=record
     m:byte;
     start:byte;
     bg:byte;
     end;
     pole=array[1..2] of real;
     matica=array[0..243,0..243] of byte;
var limit,pocet,i,j,gd,gm:integer;
    cr,ci:real;
    z,zm:pole;
    farba:zaznam;
    start:integer;
    osi:boolean;
    exp:integer;
    m:matica;

begin
gd:=detect;
initgraph (gm,gd,'c:\bp\bgi');
randomize;
setbkcolor(0);
farba.m:=0;
farba.start:=15;
farba.bg:=15;
start:=0;
limit:=20;
osi:=false;
exp:=2;


 for i:=0 to 121 do
   for j:=0 to 121 do
     begin
       cr:=(i-95)/50;
       ci:=(60-j)/50;
       z[1]:=0;
       z[2]:=0;
       pocet:=0;
       repeat
         zm[1]:=sqr(z[1])-sqr(z[2]);
         zm[2]:=2*z[1]*z[2];
         z[1]:=zm[1]+cr;
         z[2]:=zm[2]+ci;

         inc(pocet);
       until (pocet>=limit) or ((z[1]*z[1]+z[2]*z[2])>4);
       m[i,j]:=pocet;
     end;

for i:=0 to 121 do
   for j:=0 to 121 do
   if m[i,j]>=limit then putpixel(250+i,180+j,0);

repeat
inc(farba.start);
if farba.start=16 then farba.start:=0;
for i:=0 to 121 do
   for j:=0 to 121 do
   if m[i,j]>=limit then
   else   begin
         putpixel(250+i,180+j,m[i,j]-start+farba.start);
          end;
until KeyPressed;
end.
