< -->

Program MoBmoving;
{$L C:\PROGRA~2\BP70\BIN\EGAVGA.OBJ}
Uses Crt,Graph;
const
   BarColor=LightRed;
   MaxVx=50;
   MaxVy=37;
   MaxTZ=300;
   MaxSteps=5;
var
   Steps,i,X,Y,X0,Y0,kx,ky, Vx,Vy:Integer;
{--------------------}
Procedure EGAVGA; External;
Procedure Init;
var
   D,R,e:integer;
   P : Pointer;
begin{Init}
  P := @EGAVGA;
  D := Detect;
  if RegisterBGIdriver(P) < 0 then
  begin
    Writeln('Ошибка регистрации драйвера: ',
    GraphErrorMsg(GraphResult));
    Halt(1);
  end;
 InitGraph(D,R,'');
 E:=GraphResult;
 If e<>grOk then halt(1);
 Randomize;
 kx:=1;
 ky:=1;
end;{Init}
{----------------}
Procedure Step;
Procedure ChangeV;
Begin
   Vx:=Round(Random(MaxVx)+1);
   Vy:=Round(Random(MaxVy)+1);
end;
{-----------}
begin {Step}
  X:=getMaxX div 2;
  Y:=GetMaxY div 2;
  Repeat
   begin
    Steps:=Round(Random(MaxSteps)+2);
    For i:=1 to steps do
      begin
       x0:=x;
       y0:=y;
       x:=x+kx*Vx;
       y:=y+ky*Vy;
       if (X<=50) or (X>= GetMaxX-50) Then
         begin
           kx:=-kx;
           if x<0 then x:=100;
           if x>(GetMaxX-50) then x:=550;
         end;
       if (Y<=50) or (Y>= GetMaxY-50) Then
        begin
           ky:=-ky;
           if y<0 then y:=70;
           if y>(GetMaxY-50) then y:=430;
        end;
       SetColor(Black);
       SetfillStyle(1,Black);
       Bar3D(x0,y0,x0+30,y0+30,20,TopOn);
       SetColor(Cyan);
       SetFillStyle(1,BarColor);
       Bar3D(x,y,x+30,y+30,20,TopOn);
       Delay(MaxTZ);
      end;
    ChangeV;
   end;
 Until Keypressed;
end;{Step}
{---------------}
Procedure Done;
begin {Done}
 CloseGraph;
 Writeln('      Программа-хранитель экрана "Brown`s Moving". ');
 Writeln('Copyright. All rights reserved. 2000. ');
 Writeln('    Все права защищены. Произведено: Округин А.А. ');
 Writeln('при поддержке Крутова А.Е. С помощью програмной оболочки');
 Writeln('            Turbo pascal. Ver. 5.0.');
 Delay(5000);{}
end;{Done}
{---------------}
begin{Model...}
 Init;
 Step;
 Done;
end.{Model...}

Назад