program kraz;
uses graph,crt;
const
f=20;
n=10;
down=#80;
up=#72;
st=25;
var
xa,ya:array[1..f,1..n] of integer; {Двумерный масив для проектирования препятсвтий }
gd,gm,x,x1,y,y1,c,ca,ra,n1,stx,i,fa,fya,s1,j,ga1,xa1:integer;
ch:char;
{Процедура создания Краза желтый прямоугольник}
  procedure Kraz(x,y,x1,y1,c:integer);
      begin
        setfillstyle(1,c);
        bar(x,y,x1,y1);
       end;
{Помехи, пока кольца}
  procedure pomehi(xa,ya,ra,ca:integer);
      begin
        setcolor(ca);
        circle(xa,ya,ra);
      end;
{Процедура управления краза, с клавиатуры}
  procedure upr(var x,y,x1,y1:integer;c:integer);
   begin
   ch:=readkey;
   if ch=#0 then
   ch:=readkey;
   Kraz(x,y,x1,y1,0);
   case ch of
   up:
   if y>0 then begin  y:=y-st;  y1:=y1-st; end;
   down:
   if y1<getmaxy-50 then  begin y:=y+st; y1:=y1+st; end;
   end;
   Kraz(x,y,x1,y1,c);
   end;
{Процедура полета колец с право на лево}
  procedure neupr(var xa,ya,ra,stx:integer);
   begin
   pomehi(xa,ya,ra,0);
   xa:=xa-stx;
   pomehi(xa,ya,ra,ca);
   delay(2);
   end;
{Тело программы}
 begin
  Gd:=Detect;
  initgraph(gm,gd,'');
  randomize;
   s1:=0;     {Зануление с1}
   xa1:=50; 
   ga1:=0; {Зануление га1}
 for j:=1 to f do  {Начало двумерного массива, столбец }
   begin
   ga1:=ga1+1;  {накрутка га1 }
   xa1:=xa1*ga1;  { задание дистанции между столбцами массива,тоесть колонны выхода колец.}
  for i:=1 to n do {колонка массива}
   begin
   s1:=s1+1;  {накрутка дистанции появления между кольцами в  1 столбце, т.к для прохаждения краза требуеться ширина не меньше его ширины}
   fa:=random(2);  {Случайное задани о наличии кольца в данной строке столбца кольца,0- пусто, 1 есть}
   if fa=1 then   {Если есть кольцо то выполняем создание для него координат}
   xa[j,i]:=getmaxx-xa1;  {Эта координата по вертикали, меняеться тока в колонках }
   ya[j,i]:=getmaxy-60*s1;  {Это устанавливает растояние между кольцами, т.к накрутка стоит раньше то, не имеет разницы есть или нету кольца в соседней клтке, переходит на следующую}

   delay(30);
      {Все дальше мозг отказал....}
{Все вроде правильно....но с двумерным масивом незапускаеться, с 1 мерным запустилось все красиво, если кто сможет допишите или поправте для более удобного употребления зарание благодарен :)}

   end;
   end;
    x:=50;
    y:=getmaxy div 2;
    x1:=x+70;
    y1:=y+20;
    c:=14;
    ra:=10;
    ca:=5;
    stx:=5;
  pomehi(xa[j,i],ya[j,i],ra,ca);
  Kraz(x,y,x1,y1,c);
Repeat
 for j:=1 to f do
 begin
 for i:=1 to n do
 begin
 neupr(xa[j,i],ya[j,i],ra,stx);
 end;
 end;
 if keypressed then upr(x,y,x1,y1,c);
until ch=#27;
readln;
closegraph;
end.