Практическое задание N 1. 49
Модифицировать программу "взрыв":
1. Сделать бомбу - в виде квадрата. При достижении краев экрана осколки бомбы должны высвечиваться красным цветом ( в программе использовать массив цветов осколков ).
2. Сделать бомбу - в виде круга. Осколки бомбы должны снижать скорость при движении.
3. Смоделировать бомбу, падающую с середины верхней части экрана и взрывающуюся при достижении нижнего края экрана.
4. Смоделировать два движущихся по горизонтали снаряда, взрывающихся при столкновении.
{------------------------------------------------------------------
Фрагмент N 5 программы "цветные волны точек"
( рисование движущегося массива пикселов с отражением от границы экрана ).
------------------------------------------------------------------}
for k:= 1 to N do begin X[k]:= random(Gx);{ координаты пиксела }
Y[k]:= random(40);
P[k]:= random(7)+9;{ цвет пиксела }
VX[k]:=-2+random(5); VY[k]:=-6+P[k]{ приращение координат }
end;
Repeat
for k:= 1 to N do begin
{ анализ границ экрана }
if (X[k]+VX[k]<0) or (X[k]+VX[k]>Gx) then VX[k]:= -VX[k];
if (Y[k]+VY[k]<0) or (Y[k]+VY[k]>Gy) then VY[k]:= -VY[k];
PutPixel(X[k], Y[k], 0);{ стирание пиксела }
X[k]:=X[k]+VX[k]; Y[k]:=Y[k]+VY[k]; { новые координаты пиксела }
PutPixel(X[k], Y[k], P[k]){ рисование пиксела }
End
Until KeyPressed;
{-----------------------------------------------------------------}
В верхней части экрана генерируются N точек цвета P[k]. Приращение координат точек задается в виде массивов VX, VY , т. е. скорость движения каждой точки постоянная, а направление изменяется при достижении границы экрана. Вертикальная скорость задается одинаковой для точек одного цвета, что создает иллюзию волнового (фронтального) движения. По горизонтали скорость выбирается случайным образом. Алгоритм создания перемещения: точка гасится пикселом с цветом фона и высвечивается вновь после ее смещения.
Практическое задание 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 точка выйдет за границу экрана, то изменения соответствующей координаты не произойдет.
Дата добавления: 2016-06-29; просмотров: 1443;