graphobj.PAS

{* Прямоугольник движется с помощью стрелок *}

Unit GRAPHOBJ;
Interface
Implementation
Begin
 writeln('Прямоугольник движется с помощью стрелок. При перемещении за край экрана прямоугольник появляется с другой стороны.
Выполнена с использованием визуальных объектов в графическом режиме.
'
);
End.

Program Kvadrat_graph_obj;

Uses graphobj.pas; {* Эту строку можно удалить *}
Uses crt, graph; {* Подключаем внешние файлы *}
Type {* Создание новых типов данных *}
  z = object  x1, y1, a, b : integer;
  ch : char;
Procedure kvadrat(x, y, cl : byte);
Procedure move(c : char);
End;
Procedure z.kvadrat(x, y, cl : byte);
Begin
setfillstyle(1, cl);
bar(x1, y1, x1 + 30, y1 + 30);
End;
Procedure z.move(c : char);
Var {* Необходимые переменные *}
  i                     : integer;
  j                     : integer;
Case c Of  #72        : y1;
  #80                   : y1;
#75                   : x1;
#77                   : x1;
#27                   : Goto exit;
If x1 = 0 Then
  x1 := x1 + 639;
If x1 = 640 Then
  x1 := x1 - 639;
If y1 = 0 Then
  y1 := y1 + 479;
If y1 = 480 Then
  y1 := y1 - 479;
exit                  :
End;
Var {* В работе нам потребуются переменные: *}
  gr : z;
  Begin
  clrscr; {* Очищаем экран *}
  gr.a := 0;
  gr.b := 0;
  InitGraph(gr.a, gr.b, 'c:bpbgi');
  gr.x1 := 320;
  gr.y1 := 240;
  gr.kvadrat(gr.x1, gr.y1, yellow);
Repeat  gr.ch := readkey; {* Ждем нажатия любой клавиши *}
  If gr.ch = #27 Then
    Goto exit;
gr.move(gr.ch);
Until false;
closegraph;
exit :  clrscr; {* Очищаем экран *}
End......