TURBO PASCAL

Новости       

Программы

Turbo Pascal

Игры

Документация

"Странности"

FAQ

Ссылки

Благодарности 

Гостевая книга

Спонсор

От автора

 

         Практическое задание 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] ,  иначе пиксел останавливается и генерируется короткий звуковой импульс.

 

На первую страницу

Rambler's Top100 PROext: Top 1000
Rambler's Top100

(с) Все права защищены.

По всем интересующим вопросам прошу писать электронный адрес

Hosted by uCoz