uses crt,graph;
type mas=array[1..500] of Pointtype;
var gd,gm,i,j,k,n:integer;
a:mas;
begin
randomize;
gd:=0;
initgraph(gd,gm,'');
for i:=1 to 500 do
begin
a[i].x:=random(getmaxX);
a[i].y:=random(getmaxY);
circle(a[i].x,a[i].y,2);
end;
k:=0;n:=0;
repeat
k:=k+1;
delay(200);
setcolor(0);
for i:=1 to 500 do
circle(a[i].x,a[i].y,2);
for i:=1 to 500 do
begin
if a[i].y>getmaxY-n-10 then a[i].y:=1
else a[i].y:=a[i].y+3;
if a[i].x<0 then a[i].x:=getmaxX
else a[i].x:=a[i].x-1;
end;
setcolor(15);
for i:=1 to 500 do
circle(a[i].x,a[i].y,2);
if k mod 20=0 then
begin
n:=n+1;
line(0,getmaxY-n,getmaxX,getmaxY-n);
end;
until keypressed;
readln
end.</span>