Нарисовать рисунок. Сделать масштабирование и перемещение рисунка - Turbo Pascal

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

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

Нарисовать рисунок в турбо паскаль. И нужно сделать масштабирование и перемещение рисунка

Решение задачи: «Нарисовать рисунок. Сделать масштабирование и перемещение рисунка»

textual
Листинг программы
uses graph,crt;
procedure ris(x,y,a,c:integer);
var r:integer;
begin
r:=a div 2;
setlinestyle(0,0,3);
setcolor(c);
rectangle(x-a,y-a,x+a,y+a);
line(x+a,y-a,x-a,y+a);
circle(x+a,y-a-r,r);
circle(x-a,y+a+r,r);
line(x-a,y-a,x+a-r,y-a-r);
line(x+a,y+a,x-a+r,y+a+r);
end;
var x,y,a,d:integer;
    k:char;
begin
x:=0;
initgraph(x,y,'');
x:=getmaxX div 2;
y:=getmaxY div 2;
a:=30;
setbkcolor(15);
setcolor(1);
outtextXY(80,20,'Dvizenie - Strelki, uvelichenie + , umenshenie - ,Exit - Esc');
ris(x,y,a,8);
repeat
if keypressed then
 begin
  k:=readkey;
  if k=#0 then k:=readkey;
  case k of
  #80:begin
      delay(100);
      ris(x,y,a,0);
      if y>getmaxY-2*a-10 then d:=0
      else d:=10;
      y:=y+d;
      ris(x,y,a,8);
      end;
  #72:begin
      delay(100);
      ris(x,y,a,0);
      if y<40+2*a then d:=0
      else d:=10;
      y:=y-d;
      ris(x,y,a,8);
      end;
  #77:begin
      delay(100);
      ris(x,y,a,0);
      if x>getmaxX-2*a then d:=0
      else d:=10;
      x:=x+d;
      ris(x,y,a,8);
      end;
  #75:begin
      delay(100);
      ris(x,y,a,0);
      if x<2*a then d:=0
      else d:=10;
      x:=x-d;
      ris(x,y,a,8);
      end;
  #43:begin
      ris(x,y,a,0);
      a:=round(a*1.1);
      ris(x,y,a,8);
      end;
  #45:begin
      ris(x,y,a,0);
      a:=round(a*0.9);
      ris(x,y,a,8);
      end;
  #27:exit;
  end;
 end;
until k=#27;
end.

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

  1. В начале программы подключаются необходимые библиотеки graph и crt.
  2. Создается процедура ris, которая принимает на вход координаты x, y, а также параметр a, отвечающий за размер рисуемого объекта.
  3. Внутри процедуры задаются значения переменных r, x, y, a. Переменная r инициализируется как половина значения переменной a. Переменные x и y инициализируются как половина максимальных координат по оси X и Y соответственно. Переменная a инициализируется значением 30.
  4. Вызывается функция initgraph для настройки графического окна.
  5. Рисуется прямоугольник с помощью функции rectangle.
  6. Рисуются две окружности с помощью функций circle.
  7. Выводятся две прямые линии, соединяющие центры окружностей.
  8. Задается цикл, который будет выполняться до тех пор, пока нажата клавиша с кодом #27.
  9. Внутри цикла считывается символ клавиши с помощью функции readkey.
  10. Проверяется, был ли считан символ #27. Если да, то цикл завершается.
  11. Если была нажата клавиша с кодом #80, задерживается выполнение программы на 100 мс.
  12. Рисуется прямоугольник с новыми значениями координат x и y.
  13. Если значение переменной y больше максимальной высоты окна, то переменная d устанавливается равной 0.
  14. Если значение переменной y меньше минимальной высоты окна, то переменная d устанавливается равной 10.
  15. Значение переменной y увеличивается на значение переменной d.
  16. Рисуется еще один прямоугольник с новыми значениями координат x и y.
  17. Повторяется шаг 13.
  18. Если была нажата клавиша с кодом #72, задерживается выполнение программы на 100 мс.
  19. Рисуется прямоугольник с новыми значениями координат x и y.
  20. Если значение переменной y меньше минимальной высоты окна, то переменная d устанавливается равной 10.
  21. Значение переменной y уменьшается на значение переменной d.
  22. Рисуется еще один прямоугольник с новыми значениями координат x и y.
  23. Повторяется шаг 19.
  24. Если была нажата клавиша с кодом #77, задерживается выполнение программы на 100 мс.
  25. Рисуется прямоугольник с новыми значениями координат x и y.
  26. Если значение переменной x больше максимальной ширины окна, то переменная d устанавливается равной 0.
  27. Если значение переменной x меньше минимальной ширины окна, то переменная d устанавливается равной 10.
  28. Значение переменной x увеличивается на значение переменной d.
  29. Рисуется еще один прямоугольник с новыми значениями координат x и y.
  30. Повторяется шаг 26.
  31. Если была нажата клавиша с кодом #75, задерживается выполнение программы на 100 мс.
  32. Рисуется прямоугольник с новыми значениями координат x и y.
  33. Если значение переменной x меньше минимальной ширины окна, то переменная d устанавливается равной 10.
  34. Значение переменной x уменьшается на значение переменной d.
  35. Рисуется еще один прямоугольник с новыми значениями координат x и y.
  36. Повторяется шаг 33.
  37. Если была нажата клавиша с кодом #43, рисуется новый прямоугольник с новыми значениями координат x и y.
  38. Если была нажата клавиша с кодом #45, рисуется новый прямоугольник с новыми значениями координат x и y.
  39. Если была нажата клавиша с кодом #27, цикл завершается.
  40. Программа завершается.

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

7   голосов , оценка 3.857 из 5
Похожие ответы