Графика в Pascal: сохранение траектории при изменении размера экрана
Формулировка задачи:
Сохранение траектории при изменении размер экрана
uses graphabc; **************************** while y>r+10 do beginvar x,y:integer; const a1=10;b1=10;a2=610;b2=310;r=20; begin x:=a2-r-2; y:=b2-r-2; //********************************************** while (y>(b2+b1)/2) and (x>(a2+a1)/2) do begin setbrushcolor(clolive); rectangle (a1,b1,a2,b2); circle (x,y,r); floodfill(x,y,clred); sleep(60); y:=y-6; x:=x-13; end; //******************** setbrushcolor(clolive); rectangle (a1,b1,a2,b2); circle(x,y,r); floodfill(x,y,clred); sleep(60); y:=y-3; end; //********************************************** while x>r+12 do begin setbrushcolor(clolive); rectangle (a1,b1,a2,b2); circle (x,y,r); floodfill(x,y,clred); sleep(60); x:=x-10; end; //************************************************ while y<(b2-r)-5 do begin setbrushcolor(clolive); rectangle (a1,b1,a2,b2); circle (x,y,r); floodfill(x,y,clred); sleep(60); y:=y+5; end; //************************************************ while x<(a1+a2)/2 do begin setbrushcolor(clolive); rectangle(a1,b1,a2,b2); circle(x,y,r); floodfill(x,y,clred); sleep(60); x:=x+3; end; //*********************************************** setbrushcolor(clolive); rectangle (a1,b1,a2,b2); circle(x,y,r); floodfill(x,y,clBlack); end.
как сделать, чтобы сохранялась траектория при изменении a1,a2,b1,b2?
Решение задачи: «Графика в Pascal: сохранение траектории при изменении размера экрана»
textual
Листинг программы
uses graphabc; var a1,a2,b1,b2,x,y:integer; const r=20; begin setwindowsize(800,500); centerwindow; a1:=10;b1:=10; a2:=windowwidth-10; b2:=windowheight-10; x:=a2-r-2; y:=b2-r-2; //********************************************** lockdrawing; while (y>(b2+b1)/2) and (x>(a2+a1)/2) do begin clearwindow; setbrushcolor(clolive); rectangle (a1,b1,a2,b2); setpencolor(clRed); setbrushcolor(clRed); circle (x,y,r); sleep(60); y:=y-6; x:=x-13; redraw end; //************************************************ while y>r+10 do begin clearwindow; setbrushcolor(clolive); rectangle (a1,b1,a2,b2); setpencolor(clRed); setbrushcolor(clRed); circle (x,y,r); sleep(60); y:=y-3; redraw; end; //********************************************** while x>a1+r+5 do begin clearwindow; setbrushcolor(clolive); rectangle (a1,b1,a2,b2); setpencolor(clRed); setbrushcolor(clRed); circle (x,y,r); sleep(60); x:=x-10; redraw end; //************************************************ while y<b2-r-5 do begin clearwindow; setbrushcolor(clolive); rectangle (a1,b1,a2,b2); setpencolor(clRed); setbrushcolor(clRed); circle (x,y,r); sleep(60); y:=y+5; redraw; end; //************************************************ while x<(a1+a2)div 2 do begin clearwindow; setbrushcolor(clolive); rectangle(a1,b1,a2,b2); setpencolor(clRed); setbrushcolor(clRed); circle (x,y,r); sleep(60); x:=x+3; redraw; end; //*********************************************** unlockdrawing; setbrushcolor(clolive); rectangle (a1,b1,a2,b2); setpencolor(clRed); setbrushcolor(clRed); circle (x,y,r); end.
Объяснение кода листинга программы
- Объявление переменных:
a1
- целое число, значение равно 10a2
- целое число, значение равно (ширина окна - 10)b1
- целое число, значение равно 10b2
- целое число, значение равно (высота окна - 10)x
- целое число, значение зависит от ширины окнаy
- целое число, значение зависит от высоты окна
- Установление размера окна:
- Устанавливается размер окна 800х500
- Окно центрируется на экране
- Анимация движения круга:
- Отключение рисования на экране
- Анимация движения круга по траектории с уменьшением координат
x
иy
- После каждого изменения координат происходит очистка экрана, рисование круга и пауза в 60 миллисекунд
- Анимация заканчивается при достижении кругом половины высоты и половины ширины окна
- Падение круга:
- После окончания первой анимации начинается анимация падения круга с постепенным уменьшением координаты
y
- Экран очищается, рисуется круг и происходит пауза в 60 миллисекунд
- Анимация заканчивается, когда круг достигает определенной высоты
- После окончания первой анимации начинается анимация падения круга с постепенным уменьшением координаты
- Движение круга влево:
- После завершения падения круга начинается его движение влево с уменьшением координаты
x
- Экран очищается, рисуется круг и происходит пауза в 60 миллисекунд
- Анимация заканчивается при достижении кругом определенной координаты
x
- После завершения падения круга начинается его движение влево с уменьшением координаты
- Движение круга вверх:
- После завершения движения влево начинается анимация движения круга вверх с увеличением координаты
y
- Экран очищается, рисуется круг и происходит пауза в 60 миллисекунд
- Анимация заканчивается при достижении кругом определенной координаты
y
- После завершения движения влево начинается анимация движения круга вверх с увеличением координаты
- Движение круга вправо:
- После завершения движения вверх начинается анимация движения круга вправо с увеличением координаты
x
- Экран очищается, рисуется круг и происходит пауза в 60 миллисекунд
- Анимация заканчивается при достижении кругом определенной координаты
x
- После завершения движения вверх начинается анимация движения круга вправо с увеличением координаты
- Отрисовка круга после анимации:
- Включение рисования на экране
- На экране отрисовывается окно и круг в конечном положении.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д