Практическое задание N 1. 48

Модифицировать программу "снег":

1. Смоделировать град - пикселы должны со звуком подскочить на преграде (нарисуйте прямоугольник) или на нижнем крае экрана.

2. Смоделировать дождь - смещающиеся пикселы должны оставлять след серого цвета, причем на этот цвет не реагировать как на цвет преграды. Дождинки не должны накапливаться на преградах.

3. Увеличить скорость падения снежинок (не забыв усовершенствовать анализатор условия остановки снежинок). Смоделировать образование снежных хлопьев - при достижении нижнего края экрана снежинка должна "обрасти" еще четырьмя пикселами - приобрести форму крестика.

4. Изменяя через 10 циклов "Repeat... Until" приращения координат по осям "X" и "Y" в диапазоне -5... +5, смоделировать порывистый ветер случайного направления, действующий на снег. Анализировать при этом вылет снежинок за боковые границы экрана.

{-----------------------------------------------------------------

Фрагмент N 4 программы "взрыв"

(рисование движущегося массива пикселов с остановкой на границах экрана).

------------------------------------------------------------------}

x1:= Gx div 2; y1:= Gy div 2;

for i:=1 to 300 do begin

X[i]:= x1+ i mod 10; { массив осколков }

Y[i]:= y1+ i div 10;

PutPixel(X[i], Y[i], 15);

VX[i]:= -10 + random(21);

VY[i]:= -10 + random(21)

end;

SetColor(5); Rectangle(x1, y1, x1+9, y1+30); { бомба }

ch:= ReadKey; { задержка до нажатия клавиши }

for i:=1 to 100 do begin

sound(random(80)); delay(1); nosound { звук взрыва }

end;

SetColor(0); Rectangle(x1, y1, x1+9, y1+30); { взрыв бомбы }

Repeat

for i:=1 to 300 do begin

if(X[i]+VX[i] > 0) and (X[i]+VX[i] < Gx) and

(Y[i]+VY[i] > 0) and (Y[i]+VY[i] < Gy)

then begin { если пиксел не перелетит за край экрана }

PutPixel(X[i],Y[i],0); X[i]:= X[i]+VX[i]; Y[i]:= Y[i]+VY[i];

PutPixel(X[i], Y[i], 14) end { движение осколков }

else begin VX[i]:= 0; VY[i]:= 0; { если пиксел долетел до края экрана }

Sound(200); delay(2); nosound end

End

Until Keypressed;

{-----------------------------------------------------------------}

В начале программы генерируется набор пикселов (X[i], Y[i]) в виде прямоугольной области и каждому пикселу предварительно назначается случайное приращение координат (скорость) (VX[i], VY[i]). После нажатия клавиши генерируется звук "взрыва" и пикселы начинают перемещаться. Анализируется возможный выход каждого пиксела за границу экрана. Если выхода не будет, то пиксел продолжает перерисовываться с приращением координат VX[i], VY[i], иначе пиксел останавливается и генерируется короткий звуковой импульс.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: