Модифицировать программу "молекулы газа в поле тяготения":
1. Изменить направление поля тяготения (в правый нижний угол).
2. Точки ярких цветов направьте к правой границе экрана, точки темных цветов - к левой границе.
3. Для одной из точек (например, с номером 100) отслеживать ее движение в виде ломаной линии.
4. Смещать сто раз через один цикл (Repeat... Until) нижнюю границу на один пиксел вверх, затем вниз и т. д., моделируя изменение "объема сосуда с молекулами". Добавить оператор, контролирующий и изменяющий координаты точек, выходящих за границу.
{------------------------------------------------------------------
Фрагмент 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", чем моделируется перемещение роя.