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...}