uses Crt,Graph;  const N=1500;
 var X,Y,vX,vY,P: array[1..N] of integer;  Gd,Gm,xm,ym,i: integer;
begin
      Gd:=0; Initgraph(Gd,Gm,'c:\bp\bgi'); xm:=getmaxX; ym:=getmaxY;
Randomize;
for i:=1 to N do begin
  X[i]:=random(xm);    { начальные координаты - полоса }
  Y[i]:=random(50);
  P[i]:=random(5)+10;  { цвет - в диапазоне 10..14 }
 vX[i]:=-3+random(7);  { скорость по горизонтали невелика }
 vY[i]:=P[i]-6;        { скорость по вертикали зависит от цвета }
 PutPixel(X[i],Y[i],P[i])  end; ReadKey;
REPEAT
for i:=1 to N do begin  PutPixel(X[i],Y[i], 0);
{ отражение от границ }
if (X[i]+vX[i]<0) or (X[i]+vX[i]>xm) then  vX[i]:=-vX[i];
if (Y[i]+vY[i]<0) or (Y[i]+vY[i]>ym) then  vY[i]:=-vY[i];

inc(X[i],vX[i]);  inc(Y[i],vY[i]); { смена координат }
PutPixel(X[i],Y[i],P[i])  end;
 delay(200)  until KeyPressed;   CloseGraph end.
