uses Graph,Crt;
const
 n=5000000;
 r=46340;
 freq=1000;
var
 gdriver, gmode : integer;
 i,pass : LongInt;
 x,y : real;
 show : Boolean;
 num, num2 : string;
{----------------------------------------------------------------------------}
{$i svga256.inc}
{$F+}
function DetectVGA256 : Integer;
 var
  Vid : Integer;
 begin
  Writeln('Which video mode would you like to use?');
  Writeln('  1) 800x600x256');
  Writeln('  2) 1024x768x256');
  ReadLn(Vid);
  if Vid in[1..2] then DetectVGA256:=Vid+2
  else begin WriteLn('Ну и нате!'); Vid:=4; end;
 end;
{ $L svgadrv.obj }
{--------------------------------------------------------------------------}
begin
 WriteLn('Анимировать? y - Да , Другая клавиша - Нет');
 if ReadKey='y' then show:=TRUE
 else show:=FALSE;
 WriteLn('Поехали!');
 if show then
 begin
  gdriver:=InstallUserDriver('SVGA256',@DetectVGA256);
  gdriver:=Detect;
  InitGraph(gdriver,gmode,'');
  SetColor(GREEN);
  Line(0,50,0,GetMaxY);
  Line(0,GetMaxY,GetMaxX,GetMaxY);
  Arc(0,GetMaxY,0,360,Round(0.8*GetMaxY));
  SetColor(BLUE);
  SetLineStyle(2,0,0);
  Line(0,Round(0.2*GetMaxY),Round(0.8*GetMaxY),Round(0.2*GetMaxY));
  Line(Round(0.8*GetMaxY),Round(0.2*GetMaxY),Round(0.8*GetMaxY),GetMaxy);
  SetColor(RED);
  OutTextXY(20,10,'Now Pi is: ');
  OutTextXY(20,30,'Percents done: ');
  TextColor(BLACK);
 end;
 {-----------------------------}
 Randomize;
 pass:=0;
 for i:=1 to n do
  begin
   x:=Random(Round(r+1));
   y:=Random(Round(r+1));
   if ((x*x)+(y*y))<(r*r) then INC(pass);
   if keypressed then begin ReadLn; break; end;
   if show then
    begin
     if (i mod freq)=0 then
      PutPixel(Round(0.8*GetMaxY*x/r),Round(GetMaxY*(0.2+(0.8*y/r))),RED);
      if (i mod (40*freq))=0 then
       begin
        SetColor(BLACK);
        OutTextXY(140,10,'██████████');
        OutTextXY(150,30,'███');
        SetColor(RED);
        str((pass/i*4):0:5,num);
        str((100*i/n):0:0,num2);
        num2:=num2+'%';
        OutTextXY(140,10,num);
        OutTextXY(150,30,num2);
       end;
    end;
  end;
 {-----------------------------}
 ReadLn;
 CloseGraph;
 TextColor(GREEN);
 WriteLn('Число ПИ получилось равным: ',(pass/i*4):0:5);
 ReadLn;
end.