crt_graph.PAS

{* Перекатывающийся кубик *}

Unit CRT_GRAPH;
Interface
Implementation
Begin
 writeln('Для изменения движения кубика требуется нажать на "p". Для выхода жмем "e"');
End.

Program pas;

Uses crt_graph.pas; {* Эту строку можно удалить *}
Uses crt, graph; {* Подключаем внешние файлы *}
label 1, 2;
Var {* Необходимые переменные *}
  rx                  : integer;
  ry                  : integer;
  r                   : integer;
  y0                  : integer;
  x1                  : integer;
  x2                  : integer;
  x3                  : integer;
  x4                  : integer;
  y1                  : integer;
  y2                  : integer;
  y3                  : integer;
  y4                  : integer;
  a                   : integer;
  k                   : integer;
  i                   : integer;
  p                   : real;
  c                   : char;
  gm                  : integer;
  gd                  : integer;
Procedure sqare(col : integer);
p1                  : integer);
q1                  : integer);
p2                  : integer);
q2                  : integer);
p3                  : integer);
q3                  : integer);
p4                  : integer);
q4                  : integer);
Var {* Необходимые переменные *}
  p1         : integer);
  q1         : integer);
  p2         : integer);
  q2         : integer);
  p3         : integer);
  q3         : integer);
  p4         : integer);
  q4         : integer);
  Begin
  p1 := i + 50 - round(70 * sin((a + 45) * p));
  q1 := 200 - round(70 * cos((a + 45) * p));
  p2 := i + 50 - round(50 * sin(a * p));
  q2 := 200 - round(50 * cos(a * p));
  p3 := i + 50;
  q3 := 200;
  p4 := i + 50 - round(50 * cos(a * p));
  q4 := 200 + round(50 * sin(a * p));
Var {* В работе нам потребуются переменные: *}
  p1 : integer);
  q1 : integer);
  p2 : integer);
  q2 : integer);
  p3 : integer);
  q3 : integer);
  p4 : integer);
  q4 : integer);
  Begin
  p1 := i - round(50 * sin(a * p));
  q1 := 200 - round(50 * cos(a * p));
  p2 := i + round(70 * cos((a + 45) * p));
  q2 := 200 - round(70 * sin((a + 45) * p));
  p3 := i + round(50 * cos(a * p));
  q3 := 200 - round(50 * sin(a * p));
  p4 := i;
  q4 := 200;
  End;
  Begin
  clrscr; {* Стираем всё с экрана *}
  k := 1;
  p := pi / 180;
  gd := detect;
  initgraph(gd, gm, ' ');
  line(0, 201, getmaxx, 201);
  i := - 50;
  2 :    Repeat
If k = 1 Then
  For a := 0 Downto - 90 Do
    Begin
change1(x1, y1, x2, y2, x3, y3, x4, y4);
sqare(white, x1, y1, x2, y2, x3, y3, x4, y4);
delay(50);
sqare(black, x1, y1, x2, y2, x3, y3, x4, y4);
End
Else If k = - 1 Then
  For a := 0 To 90 Do {* Увеличиваем a от 0 до 90 с шагом 1 *}
    Begin
change2(x1, y1, x2, y2, x3, y3, x4, y4);
sqare(white, x1, y1, x2, y2, x3, y3, x4, y4);
delay(5);
sqare(black, x1, y1, x2, y2, x3, y3, x4, y4);
End;
i := i + k * 50;
Until (i > getmaxx + 50) Or (igetmaxx + 50 Then
i := - 50
Else i := getmaxx + 50;
  If ord(c) = ord('p'Then
    Begin
k := k * ( - 1);
c := 'q';
End
  Else If ord(c) = ord('e'Then
    Goto 1
  Else c := 'q';
    Goto 2;
1 : closegraph;
End......