Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Pascal.DOC
Скачиваний:
23
Добавлен:
21.03.2015
Размер:
1.77 Mб
Скачать

Практическое задание n 1. 50

Модифицировать программу "цветные волны точек":

1. Создать два перекрещивающихся набора волн: по горизонтали и по вертикали.

2. Изменить условие отражения точек от границ экрана: при достижении горизонтального края должны "прилипать" с изданием звука точки одного цвета, затем другого и т. д. до остановки всех точек.

3. Сгенерировать волны, движущиеся из левой верхней четверти экрана по диагонали. Изменять цвет точек при каждом их отражении от границ экрана.

4. Сгенерировать две волны, движущиеся из правого и левого верхних углов экрана по диагонали. Уменьшать скорость точек при каждом их отражении от границ экрана.

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

Фрагмент N 6 программы "молекулы газа в поле тяготения"

( рисование массива пикселов, хаотично перемещающихся в заданном направлении).

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

for k:= 1 to N do begin X[k]:= random(Gx);

Y[k]:= random(Gy);

P[k]:= random(7)+9 end;

Repeat

for k:= 1 to N do begin

PutPixel(X[k], Y[k], 0);

dx:= -25 + random(51); dy:= -25 + random(71);

if (X[k]+dx > 0) and (X[k]+dx < Gx) then X[k]:= X[k] + dx;

if (Y[k]+dy > 0) and (Y[k]+dy < Gy) then Y[k]:= Y[k] + dy;

PutPixel(X[k], Y[k], P[k])

end

Until KeyPressed;

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

В программе определены массивы координат точек X[1. . N], Y[1. . N] и цвета P[1. . N]. Точки гасятся, случайным образом смещаются их координаты на dx, dy, а затем точки вновь высвечиваются прежним цветом - создается иллюзия движения. Причем dx генерируется в диапазоне -25. . . 25, а dy - в диапазоне -25. . . 45, поэтому точки стремятся к нижней границе экрана, имитируя поведение молекул газа в толстом слое атмосферы. Введено ограничение на перемещение - если при очередном назначении dx или dy точка выйдет за границу экрана, то изменения соответствующей координаты не произойдет.

Практическое задание n 1. 51

Модифицировать программу "молекулы газа в поле тяготения":

1. Изменить направление поля тяготения (в правый нижний угол).

2. Точки ярких цветов направьте к правой границе экрана, точки темных цветов - к левой границе.

3. Для одной из точек (например, с номером 100) отслеживать ее движение в виде ломаной линии.

4. Смещать сто раз через один цикл (Repeat. . . Until) нижнюю границу на один пиксел вверх, затем вниз и т. д. , моделируя изменение "объема сосуда с молекулами". Добавить оператор, контролирующий и изменяющий координаты точек, выходящих за границу.

85

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

Фрагмент N 7 программы "пчелиный рой"

( рисование массива пикселов, хаотично перемещающихся около движущейся точки).

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

for k:=1 to N do begin X[k]:= random(Gx);

Y[k]:= random(Gy);

P[k]:= random(16) end;

i:=1;

Repeat

if i < Gx then i:= i + 3; { смещение "центра" роя }

for k:= 1 to N do begin

dx:= -25 + random(51);

dy:= -25 + random(51); PutPixel(X[k], Y[k], 0);

if (X[k]+dx > 0) and (X[k]+dx < Gx) { контроль выхода пикселов }

then begin { за границу экрана }

if (X[k]+dx < Gx-i) then dx:= dx+5 { контроль выхода "центра" }

else dx:= dx-5; X[k]:= X[k]+dx { за границу экрана }

end;

if (Y[k]+dy > 0) and (Y[k]+dy < Gy) { контроль выхода пикселов }

then begin { за границу экрана }

if (Y[k]+dy<Gy div 2) then dy:= dy+5 { контроль выхода "центра" }

else dy:= dy-5; Y[k]:= Y[k]+dy { за границу экрана }

end;

PutPixel(X[k], Y[k], P[k])

end

Until KeyPressed;

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

Эта программа - усложненный вариант фрагмента N6. Случайные смещения координат точек dx, dy сначала задаются равномерно из диапазона 25. . . 25. Затем анализируется местоположение каждой точки относительно полюса с координатами Gx-i, Gy div 2. Смещения координат корректируются так, чтобы точки "тяготели" к "центру". "Центр" перемещается из-за изменения параметра "i", чем моделируется перемещение роя.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]