Программа


{ Забрасыватель мяча в корзину }
Uses Crt,Graph;  { Подключение модулей }
Const PathToDriver=''; { Путь к графическому драйверу }
Type Direction=(FromRight,FromLeft); { Направление }
     Func=Function(X:integer):integer;
Var Exit:boolean;  { Флаг выхода из программы }
    GraphDriver:Integer; { Графический драйвер }
    GraphMode:Integer;   { Графический режим }
    i:byte;
Procedure SwitchingPage; { Переключение отображаемой и активной видеостраниц }
  const Page:boolean=FALSE;
  Begin
    if Page then begin
                   SetActivePage(1);
                   SetVisualPage(0)
                 end
            else begin
                   SetActivePage(0);
                   SetVisualPage(1)
                 end;
    Page:=not Page { Переустановка флага }
  End;
Function Trajectory1(X:integer):integer;far; { Траектория }
  Begin
    Trajectory1:=Round(GetMaxY*(10*Sqr(X/GetMaxX)-7.5*X/GetMaxX+1.45))
  End;
Function Trajectory2(X:integer):integer;far; { Траектория }
  Begin
    Trajectory2:=Round(GetMaxY*(10*Sqr(X/GetMaxX)-12.5*X/GetMaxX+3.95))
  End;
Function Trajectory3(X:integer):integer;far; { Траектория }
  Begin
    Trajectory3:=Round(GetMaxY*(4.375*Sqr(X/GetMaxX)-4.375*X/GetMaxX+1.19375))
  End;
Procedure Artist(X:integer;F:Func;DiferentX:integer);
                                                 { Процедура прорисовки мяча }
  const Radius=8;      { Радиус мяча }
  Begin
    SetFillStyle(SolidFill,Black); { Установка цвета и стиля заполнения }
    SetColor(Black); { Установка черного цвета }
    PieSlice(X+DiferentX,F(X+DiferentX),0,360,Radius);
                                { Закрашивание передыдущего изображения мяча }
    SetFillStyle(SolidFill,White); { Установка цвета и стиля заполнения }
    SetColor(White); { Установка белого цвета }
    PieSlice(X,F(X),0,360,Radius); { Прорисовка мяча }
    SwitchingPage    { Переключение видеостраниц }
  End;
Procedure BallDriver(Direct:Direction);  { Процедура движения мяча }
  var X:integer;  { Координата мяча }
  Begin
    if Random(2)=0 { Случайный выбор траекории }
      then
        if Direct=FromLeft 
          then { Движение мяча с левой стороны }
            for X:=GetMaxX div 10 to GetMaxX div 2 do
              Artist(X,Trajectory1,-2)
          else { Движение мяча с правой стороны }
            for X:=GetMaxX*9 div 10 downto GetMaxX div 2 do
              Artist(X,Trajectory2,2)
      else
        if Direct=FromLeft
          then  { Движение мяча с левой стороны }
            for X:=GetMaxX div 10 to GetMaxX*9 div 10 do
              Artist(X,Trajectory3,-2)
          else  { Движение мяча с правой стороны }
            for X:=GetMaxX*9 div 10 downto GetMaxX div 10 do
              Artist(X,Trajectory3,2);
    ReadKey { Остановка программы }
  End;
Function ReaderKey:char; { Функция чтения клавиатуры }
  var Ch:char;
  Begin
    repeat
      Ch:=ReadKey  { Чтение клавиатуры }
    until Ch in [#71,#55,#73,#57,#27,' '];
                           { Выход из цикла при получении корректного ответа }
    ReaderKey:=Ch  { Определение значения функции }
  End;
BEGIN
  Randomize;     { Инициализация генератора случайных чисел }
  Exit:=FALSE;   { Сброс флага выхода }
  GraphDriver:=Detect;  { Автоматическое оперделение драйвера }
  GraphMode:=0;         { Задание графического режима }
  InitGraph(GraphDriver,GraphMode,PathToDriver); { Инициалиэация графики }
  repeat
    for i:=1 to 2 do  { Цикл прорисовки в двух страницах }
      Begin
        SwitchingPage; { Переключение страниц }
        SetColor(White); { Установка белого цвета }
        Arc(GetMaxX div 2,GetMaxY div 6,180,360,GetMaxY div 14 );
                                                        { Прорисовка корзины }
        Line(0,GetMaxY*9 div 10,GetMaxX,GetMaxY*9 div 10);
        OutTextXY(0,GetMaxY*9 div 10+3,                 { Вывод подсказки }
       '   Home(7) - From Left        PgUp(9) - From Right     ' +
                '   Esc - Exit        Space - New')
      End;
    case ReaderKey of               { Выбор действия по прочтенному символу }
       #71,#55:BallDriver(FromLeft);
       #73,#57:BallDriver(FromRight);
       #27:Exit:=TRUE
    end;
    ClearDevice { Очистка экрана }
  until Exit;
  CloseGraph           { Закрытие графического режима }
END.

Бесплатные примеры программ
Примеры написанных программ
Помощь студентам по программированию