Графика: праздничный салют - Pascal ABC
Формулировка задачи:
Салют.Реализовать на экране картину праздничного салюта:взлет,разрывы,падения пиротехнических ракет и их осколков (из нескольких стволов).Световые эффекты желательно сопроводить звуковыми.
Решение задачи: «Графика: праздничный салют»
textual
Листинг программы
uses crt,graphABC; var vx,vy: integer; procedure Vzlet(x,k: integer); var i,y: integer; begin y:=500; for i:=1 to 100 do begin setbrushcolor(clwhite); setpencolor(clwhite); circle(x,y,5); if i>10 then begin setbrushcolor(clblack); setpencolor(clblack); circle(x-(k*10),y+(4*10),5); end; y:=y-4; x:=x+k; sleep(10); end; end; procedure Bach (x,y: integer); var i,j,kx,ky: integer; begin for j:=1 to 6 do begin clearwindow(clblack); for i:=1 to 100 do begin setbrushcolor(rgb(random(255),random(255),random(255))); setpencolor(rgb(random(255),random(255),random(255))); repeat kx:=random(200)-100; ky:=random(200)-100; until sqr(kx)+sqr(ky)<sqr(100); circle(x+kx,y+ky,6-j); sleep(1); end; y:=y+10; sleep(50); end; end; begin hidecursor; setwindowsize(800,500); clearwindow(clblack); repeat vx:=random(400)+200; vy:=random(6)-3; Vzlet(vx,vy); Bach (vx+(vy*100),random(100)+100); until keypressed; end.
Объяснение кода листинга программы
- В начале кода подключаются необходимые библиотеки и переменные.
- В процедуре Vzlet(x,k:) используются циклы for для рисования кругов с определенными параметрами. Переменная y инициализируется значением 500, а затем уменьшается на 4 с каждой итерацией цикла. Переменная x увеличивается на значение k при каждой итерации цикла. Если значение переменной i больше 10, то цвет кисти и пера меняется на черный.
- В процедуре Bach (x,y:) используется цикл for для рисования кругов на окне. Цикл повторяется 6 раз, каждый раз меняя цвет кисти и пера на случайный из палитры RGB. Критерий остановки - сумма квадратов координат x и y меньше суммы квадратов значения 100.
- Основной цикл программы начинается с вызова функции hidecursor() для скрытия курсора мыши, затем устанавливается размер окна приложения. Затем происходит последовательное выполнение процедур Vzlet(x,vy) и Bach(vx,vy) до нажатия клавиши.