program kruznice_Bresenham;

const xs=120;
      ys=32;

var x,y,r,p,pi:integer;
    c:char;
    dx,dy:integer;

procedure body(x,y:integer);
 begin
  draw(xs+x,ys+y,xs+x,ys+y,1);
  draw(xs+x,ys-y,xs+x,ys-y,1); 
  draw(xs-x,ys+y,xs-x,ys+y,1);
  draw(xs-x,ys-y,xs-x,ys-y,1);
  draw(xs+y,ys+x,xs+y,ys+x,1);
  draw(xs+y,ys-x,xs+y,ys-x,1);
  draw(xs-y,ys+x,xs-y,ys+x,1);
  draw(xs-y,ys-x,xs-y,ys-x,1);
 end;

begin
 r:=25;
 x:=0;
 y:=r;
 p:=1-r;
 pi:=p;
 dx:=3;
 dy:=2*r-2;

 setmode(4);

 repeat
  body(x,y);
  if p>=0 then
   begin
    p:=pi-dy;
    y:=y-1;
    dy:=dy-2;
    pi:=p;
   end;
  p:=pi+dx;
  pi:=p;
  dx:=dx+2;
  x:=x+1;
 until x>y;

 repeat
 until keypressed;
 c:=inkey;

 setmode(7);

end.
