Программа


USES Crt,Graph;             { Подключение модулей }
CONST PathToDriver='';   { Путь к графическому драйверу }
VAR Exit:boolean;           { Флаг выхода из программы }
    GraphDriver:integer;    { Графический драйвер }
    GraphMode:integer;      { Графический режим }
    X1,X2,Y1,Y2:real;       { Координаты концов отрезка }
    X1pred,X2pred,Y1pred,Y2pred:real; { Предыдущии координаты концов отрезка }
    Vx,Vy:real;             { Проекции скоростей отрезка }
FUNCTION Min(a,b:real):real;  { Функция определения минимального }
  Begin
    if a<b        { Сравнение }
    then Min:=a   { Определение значения функции }
    else Min:=b
  End;
FUNCTION Max(a,b:real):real;  { Функция определения максимального }
  Begin
    if a>b        { Сравнение }
    then Max:=a   { Определение значения функции }
    else Max:=b
  End;
PROCEDURE SwitchingPage;{ Переключение отображаемой и активной видеостраниц }
  Const Page:boolean=FALSE; { Флаг страниц }
  Begin
    SetVisualPage(Ord(Page));           { Установка отображаемой страницы  }
    SetActivePage(Ord(not Page));       { Установка активной страницы }
    Page:=not Page                      { Переустановка флага }
  End;
BEGIN
  ClrScr;               { Очистка экрана }
  { Ввод начальных параметров: }
  Write('Введите X-координату первого конца отрезка [1..300] ');
  ReadLn(X1);
  Write('Введите Y-координату первого конца отрезка [1..200] ');
  ReadLn(Y1);
  Write('Введите X-координату второго конца отрезка [1..300] ');
  ReadLn(X2);
  Write('Введите Y-координату второго конца отрезка [1..200] ');
  ReadLn(Y2);
  Write('Введите скорость по X [-0.9..0.9] ');
  ReadLn(Vx);
  Write('Введите скорость по Y [-0.9..0.9] ');
  ReadLn(Vy);
  X1pred:=1; X2pred:=1; Y1pred:=1; Y2pred:=1;  { Сброс предыдущих координат }
  Exit:=FALSE;          { Сброс флага выхода }
  GraphDriver:=Detect;  { Автоматическое оперделение драйвера }
  GraphMode:=0;         { Задание графического режима }
  InitGraph(GraphDriver,GraphMode,PathToDriver); { Инициалиэация графики }
{  SetGraphMode(1); { Установка графического режима }
{  SwitchingPage;  { Переключение видео страниц }
  RectAngle(0,0,GetMaxX,GetMaxY); { Прорисовка прямоугольника }
{  SwitchingPage;  { Переключение видео страниц }
  RectAngle(0,0,GetMaxX,GetMaxY); { Прорисовка прямоугольника }
  repeat { Цикл обработки клавиатуры }
    { Проверки ударов о стенки: }
    if (Min(X1,X2)-0.5<1)and(Vx<0) then Vx:=-Vx;
    if (Max(X1,X2)+1.5>GetMaxX-1)and(Vx>0) then Vx:=-Vx;
    if (Min(Y1,Y2)-0.5<1)and(Vy<0) then Vy:=-Vy;
    if (Max(Y1,Y2)+1.5>GetMaxY)and(Vy>0) then Vy:=-Vy;
{    SwitchingPage;  { Переключение видео страниц }
    SetColor(Black);  { Установка черного цвета }
    Line(Round(X1pred),Round(Y1pred),Round(X2pred),Round(Y2pred)); { Закрашивание линии }
    SetColor(White);  { Установка белого цвета }
    Line(Round(X1),Round(Y1),Round(X2),Round(Y2)); { Прорисовка линии }
{    SwitchingPage;  { Переключение видео страниц }
    SetColor(Black);  { Установка черного цвета }
    Line(Round(X1pred),Round(Y1pred),Round(X2pred),Round(Y2pred)); { Закрашивание линии }
    SetColor(White);  { Установка белого цвета }
    Line(Round(X1),Round(Y1),Round(X2),Round(Y2)); { Прорисовка линии }
    X1pred:=X1; X2pred:=X2; Y1pred:=Y1; Y2pred:=Y2;  { Сохранение предыдущих координат }
    X1:=X1+Vx; X2:=X2+Vx; Y1:=Y1+Vy; Y2:=Y2+Vy;   { Пересчет координат }
    if KeyPressed then Exit:=ReadKey=#27 { Сканирование клавиатуры }
  until Exit;
  CloseGraph           { Закрытие графического режима }
END.

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