Верхнюю фигуру надо нарисовать от верхнего поля, а нижнюю от конца поля - Turbo Pascal

Узнай цену своей работы

Формулировка задачи:

Задание Что касается задания,значит верхнюю фигуру надо нарисовать от верхнего поля, а нижнюю от конца поля. Потом надо их сдвигать друг к другу, после того как они сойдутся, они должны разойтись.

Решение задачи: «Верхнюю фигуру надо нарисовать от верхнего поля, а нижнюю от конца поля»

textual
Листинг программы
  1. uses crt,graph;
  2. procedure f1(x,y,c:integer);
  3. var p:array[1..4]of pointtype;
  4. begin
  5. p[1].x:=x;
  6. p[1].y:=y;
  7. p[2].x:=x-40;
  8. p[2].y:=y-20;
  9. p[3].x:=x+40;
  10. p[3].y:=y-20;
  11. p[4]:=p[1];
  12. setcolor(c);
  13. drawpoly(4,p);
  14. end;
  15. procedure f2(x,y,c:integer);
  16. var p:array[1..6] of pointtype;
  17. begin
  18. p[1].x:=x;
  19. p[1].y:=y;
  20. p[2].x:=x-40;
  21. p[2].y:=y-20;
  22. p[3].x:=x-40;
  23. p[3].y:=y+20;
  24. p[4].x:=x+40;
  25. p[4].y:=y+20;
  26. p[5].x:=x+40;
  27. p[5].y:=y-20;
  28. p[6]:=p[1];
  29. setcolor(c);
  30. drawpoly(6,p);
  31. end;
  32. var x,y1,y2,k:integer;
  33. begin
  34. initgraph(x,y1,'');
  35. x:=getmaxX div 2;
  36. y1:=80;
  37. y2:=getmaxY-80;
  38. outtextXY(x-50,10,'Exit any key');
  39. repeat
  40. f1(x,y1,14);
  41. f2(x,y2,14);
  42. delay(50);
  43. f1(x,y1,0);
  44. f2(x,y2,0);
  45. if y1<=81 then k:=2
  46. else if y1>=y2 then k:=1;
  47. case k of
  48. 2:begin
  49.   y1:=y1+5;
  50.   y2:=y2-5;
  51.   end;
  52. 1:begin
  53.   y1:=y1-5;
  54.   y2:=y2+5;
  55.   end;
  56. end;
  57. f1(x,y1,14);
  58. f2(x,y2,14);
  59. until keypressed;
  60. end.

Объяснение кода листинга программы

  1. В начале кода подключаются необходимые библиотеки crt и graph.
  2. Затем определяются два процедурных блока f1 и f2, которые принимают три параметра: x, y и c (последний параметр представляет собой цвет, используемый в функции setcolor).
  3. Внутри первого процедурного блока f1 переменная p инициализируется массивом типа pointtype, состоящим из четырех элементов. Каждый элемент имеет координаты x и y. Затем выполняется следующие действия:
    • p[1].x = x;
    • p[1].y = y;
    • p[2].x = x - 40;
    • p[2].y = y - 20;
    • p[3].x = x + 40;
    • p[3].y = y - 20;
    • p[4] = p[1]; (сохраняем координаты первого элемента в четвертом элементе массива)
    • setcolor(c);
    • drawpoly(4, p); (рисуем полигон из четырех точек)
  4. Второй процедурный блок f2 аналогичен первому, но использует другой массив p с шестью элементами.
  5. Далее определяется переменная k, которая будет использоваться для определения направления движения точек.
  6. Затем в цикле повторяются вызовы процедур f1 и f2 с использованием переменных x, y1 и y2, которые изменяются таким образом, чтобы точки двигались в нужном направлении.
  7. После каждого цикла проверяется, достигла ли y1 значения 81. Если да, то значение k устанавливается равным 2, что означает смену направления движения. Если нет, то проверяется, достигла ли y1 значения y2. Если да, то значение k устанавливается равным 1, что означает продолжение движения в текущем направлении.
  8. В конце кода вызываются последние два вызова функций f1 и f2 без параметров, чтобы завершить движение точек.
  9. Завершается программа вызовом функции outtextXY для вывода сообщения Exit any key в указанное место на экране.
  10. Цикл повторяется до тех пор, пока не будет нажата клавиша.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.125 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы