uses crt, graphabc;
var now, result: array[1..5] of integer;
var i, tour, your, tmp: integer;

procedure pole;    //рисуем поле
var i: integer;
begin
     setbrushcolor(RGB(255, 255, 255));
     i := 150;
     while i <= 900 do //сетка
     begin
          if (i - 150) mod 150 = 0 then setpenwidth(2)
          else if (i - 150) mod 750 = 0 then setpenwidth(3)
          else setpenwidth(1);
          line(i, 80, i, 300);
          i := i + 15;
     end;
     for i := 0 to 5 do
         textout(145 + i * 150, 60, inttostr(i * 10)); //дистанция
         
     for i := 1 to 5 do
         begin
              if i = your then setfontcolor(RGB(255, 0, 0)) else setfontcolor(RGB(0, 0, 0));
              textout(30, 60 + i * 40, inttostr(i) + '(' + inttostr(result[i]) + ' баллов)'); //номера скакунов и их баллы
         end;
end;

procedure draw(var a: array[1..5] of integer); //рисуем текущее положение скакунов
var i:integer;
begin
     clearwindow;
     clrscr;
     pole();
     for i := 1 to 5 do
     begin
          case i of
               1: setbrushcolor(RGB(255, 0, 0));
               2: setbrushcolor(RGB(0, 255, 0));
               3: setbrushcolor(RGB(0, 0, 255));
               4: setbrushcolor(RGB(255, 120, 0));
               5: setbrushcolor(RGB(0, 255, 120));
          end;
          fillrect(150, 60 + i * 40, 150 + 15 * a[i], 80 + i * 40)
     end;
     redraw;
end;

begin
     setwindowwidth(1000);
     write('На какую лошадь ставим? '); readln(your);
     lockdrawing; //чтобы не мерцало
     for tour := 1 to 5 do  //бегаем 5 раз
     begin
           now[1] := 0;
           now[2] := 0;
           now[3] := 0;
           now[4] := 0;
           now[5] := 0;
           while (now[1] < 50) and (now[2] < 50) and (now[3] < 50) and (now[4] < 50) and (now[5] < 50) do
           begin
                for i := 1 to 5 do now[i] := now[i] + 1 + random(5);
                draw(now);
                delay(20); //скорость бега
           end;
           for i :=1 to 5 do //определяем победителей, если в течение одного хода финиш пересекли несколько лошадей, то победители - все (я так условие понял)
               if now[i] >= 50 then result[i] := result[i] + 5;
           draw(now);
     end;
     //ищем победителя
     tmp := 1;
     for i := 2 to 5 do if result[i] > result[tmp] then tmp := i;
     if result[your] = result[tmp] then writeln('Поздравляем, ваша лошадь в числе победителей!')
     else writeln('Ваша лошадь проиграла, у нее ', result[your], ' баллов а у победителя - ', result[tmp]);
     redraw;
end.