Графика в Pascal: сохранение траектории при изменении размера экрана

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

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

Сохранение траектории при изменении размер экрана
Листинг программы
  1. uses graphabc;
  2. ****************************
  3. while y>r+10 do
  4. beginvar x,y:integer;
  5. const a1=10;b1=10;a2=610;b2=310;r=20;
  6. begin
  7. x:=a2-r-2; y:=b2-r-2;
  8. //**********************************************
  9. while (y>(b2+b1)/2) and (x>(a2+a1)/2) do
  10. begin
  11. setbrushcolor(clolive);
  12. rectangle (a1,b1,a2,b2);
  13. circle (x,y,r);
  14. floodfill(x,y,clred);
  15. sleep(60);
  16. y:=y-6;
  17. x:=x-13;
  18. end;
  19. //********************
  20. setbrushcolor(clolive);
  21. rectangle (a1,b1,a2,b2);
  22. circle(x,y,r);
  23. floodfill(x,y,clred);
  24. sleep(60);
  25. y:=y-3;
  26. end;
  27. //**********************************************
  28. while x>r+12 do
  29. begin
  30. setbrushcolor(clolive);
  31. rectangle (a1,b1,a2,b2);
  32. circle (x,y,r);
  33. floodfill(x,y,clred);
  34. sleep(60);
  35. x:=x-10;
  36. end;
  37. //************************************************
  38. while y<(b2-r)-5 do
  39. begin
  40. setbrushcolor(clolive);
  41. rectangle (a1,b1,a2,b2);
  42. circle (x,y,r);
  43. floodfill(x,y,clred);
  44. sleep(60);
  45. y:=y+5;
  46. end;
  47. //************************************************
  48. while x<(a1+a2)/2 do
  49. begin
  50. setbrushcolor(clolive);
  51. rectangle(a1,b1,a2,b2);
  52. circle(x,y,r);
  53. floodfill(x,y,clred);
  54. sleep(60);
  55. x:=x+3;
  56. end;
  57. //***********************************************
  58. setbrushcolor(clolive);
  59. rectangle (a1,b1,a2,b2);
  60. circle(x,y,r);
  61. floodfill(x,y,clBlack);
  62. end.
как сделать, чтобы сохранялась траектория при изменении a1,a2,b1,b2?

Решение задачи: «Графика в Pascal: сохранение траектории при изменении размера экрана»

textual
Листинг программы
  1. uses graphabc;
  2. var a1,a2,b1,b2,x,y:integer;
  3. const r=20;
  4. begin
  5. setwindowsize(800,500);
  6. centerwindow;
  7. a1:=10;b1:=10;
  8. a2:=windowwidth-10; b2:=windowheight-10;
  9. x:=a2-r-2; y:=b2-r-2;
  10. //**********************************************
  11. lockdrawing;
  12. while (y>(b2+b1)/2) and (x>(a2+a1)/2) do
  13.   begin
  14.    clearwindow;
  15.    setbrushcolor(clolive);
  16.    rectangle (a1,b1,a2,b2);
  17.    setpencolor(clRed);
  18.    setbrushcolor(clRed);
  19.    circle (x,y,r);
  20.    sleep(60);
  21.    y:=y-6;
  22.    x:=x-13;
  23.    redraw
  24.   end;
  25. //************************************************
  26. while y>r+10 do
  27.    begin
  28.     clearwindow;
  29.     setbrushcolor(clolive);
  30.     rectangle (a1,b1,a2,b2);
  31.     setpencolor(clRed);
  32.     setbrushcolor(clRed);
  33.     circle (x,y,r);
  34.     sleep(60);
  35.     y:=y-3;
  36.     redraw;
  37.    end;
  38. //**********************************************
  39. while x>a1+r+5 do
  40.   begin
  41.    clearwindow;
  42.    setbrushcolor(clolive);
  43.    rectangle (a1,b1,a2,b2);
  44.    setpencolor(clRed);
  45.    setbrushcolor(clRed);
  46.    circle (x,y,r);
  47.    sleep(60);
  48.    x:=x-10;
  49.    redraw
  50.   end;
  51. //************************************************
  52. while y<b2-r-5 do
  53.   begin
  54.    clearwindow;
  55.    setbrushcolor(clolive);
  56.    rectangle (a1,b1,a2,b2);
  57.    setpencolor(clRed);
  58.    setbrushcolor(clRed);
  59.    circle (x,y,r);
  60.    sleep(60);
  61.    y:=y+5;
  62.    redraw;
  63.   end;
  64. //************************************************
  65. while x<(a1+a2)div 2 do
  66.   begin
  67.    clearwindow;
  68.    setbrushcolor(clolive);
  69.    rectangle(a1,b1,a2,b2);
  70.    setpencolor(clRed);
  71.    setbrushcolor(clRed);
  72.    circle (x,y,r);
  73.    sleep(60);
  74.    x:=x+3;
  75.    redraw;
  76.   end;
  77. //***********************************************
  78. unlockdrawing;
  79. setbrushcolor(clolive);
  80. rectangle (a1,b1,a2,b2);
  81. setpencolor(clRed);
  82. setbrushcolor(clRed);
  83. circle (x,y,r);
  84. end.

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

  1. Объявление переменных:
    • a1 - целое число, значение равно 10
    • a2 - целое число, значение равно (ширина окна - 10)
    • b1 - целое число, значение равно 10
    • b2 - целое число, значение равно (высота окна - 10)
    • x - целое число, значение зависит от ширины окна
    • y - целое число, значение зависит от высоты окна
  2. Установление размера окна:
    • Устанавливается размер окна 800х500
    • Окно центрируется на экране
  3. Анимация движения круга:
    • Отключение рисования на экране
    • Анимация движения круга по траектории с уменьшением координат x и y
    • После каждого изменения координат происходит очистка экрана, рисование круга и пауза в 60 миллисекунд
    • Анимация заканчивается при достижении кругом половины высоты и половины ширины окна
  4. Падение круга:
    • После окончания первой анимации начинается анимация падения круга с постепенным уменьшением координаты y
    • Экран очищается, рисуется круг и происходит пауза в 60 миллисекунд
    • Анимация заканчивается, когда круг достигает определенной высоты
  5. Движение круга влево:
    • После завершения падения круга начинается его движение влево с уменьшением координаты x
    • Экран очищается, рисуется круг и происходит пауза в 60 миллисекунд
    • Анимация заканчивается при достижении кругом определенной координаты x
  6. Движение круга вверх:
    • После завершения движения влево начинается анимация движения круга вверх с увеличением координаты y
    • Экран очищается, рисуется круг и происходит пауза в 60 миллисекунд
    • Анимация заканчивается при достижении кругом определенной координаты y
  7. Движение круга вправо:
    • После завершения движения вверх начинается анимация движения круга вправо с увеличением координаты x
    • Экран очищается, рисуется круг и происходит пауза в 60 миллисекунд
    • Анимация заканчивается при достижении кругом определенной координаты x
  8. Отрисовка круга после анимации:
    • Включение рисования на экране
    • На экране отрисовывается окно и круг в конечном положении.

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


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

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

10   голосов , оценка 3.6 из 5

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

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

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