Практическое задание N 1. 52
Модифицировать программу "пчелиный рой":
1. Замедлить перемещение роя и запрограммировать изменение направления перемещения при достижении края экрана.
2. Ускорить перемещение роя и запрограммировать движение по вертикали с изменением направления перемещения при достижении края экрана.
3. Создать два роя разного цвета, один из которых случайным образом перемещающиеся по экрану, а другой движется вслед за первым.
4. Создать два роя разного цвета, один из которых случайным образом перемещающиеся по экрану, а другой движется в противоположную сторону.
5. Смоделировать движение кометы.
{------------------------------------------------------------------
Фрагмент N 8 программы "мячик в коробке"
( рисование движущейся окружности с анализом границ области по цвету пиксела .
------------------------------------------------------------------}
x1:=100; x2:=400; y1:=120; y2:=380;{Координаты углов наружной коробки}
dx:= -5; dy:= 3;{ начальный шаг движения мяча }
r:= 4;{ Радиус мяча }
SetColor(11); Rectangle(x1, y1, x2, y2);{ Наружная коробка }
Rectangle(x1+30, y1+70, x1+120, y1+90);{ Внутренние коробки }
Rectangle(x1+200, y1+90, x1+230, y1+200);
xc:= x1+90; yc:= y1+110; Circle(xc, yc, r);{ Мячик }
ax:= abs(dx); ay:= abs(dy); { число пикселов по ходу движения }
Repeat i2:= 0; i1:= 0;{ признаки удара о стенку равны нулю }
zx:= dx div abs(dx); zy:= dy div abs(dy); { направление движения }
for i:= 1 to ax do
if GetPixel(xc+(r+i)*zx, yc) > 0 then{ удар о вертикальную стенку }
begin dx:= -dx; i1:= 1; break end;
for i:= 1 to ay do
if GetPixel(xc, yc+(r+i)*zy) > 0 then{ удар о горизонтальную стенку }
begin dy:= -dy; i2:=1; break end;
if (i1+i2 = 0) then for i:= 1 to ax do for k:= 1 to ay do
if (GetPixel(xc+(r+i)*zx, yc+(r+k)*zy)>0) then { удар во внешний угол }
begin dy:= -dy; dx:= -dx; break end;
SetColor( 0); Circle(xc, yc, r);{ стирание мяча }
xc:= xc+dx; yc:= yc+dy;{ приращение координат }
SetColor(14); Circle(xc, yc, r){ рисование мяча }
Until Keypressed;
{-----------------------------------------------------------------}
Операторами Rectangle рисуется лабиринт, образованный прямоугольником, содержащим два вложенных в него прямоугольника. Внутрилабиринта начинается перемещение окружности (мячика) с центром (XC, YC) и радиусом "r". Принцип движения мяча: рисование, задержка, рисование цветом фона (стирание), приращение координат в цикле. По цвету пиксела анализируется положение края мяча относительно границ лабиринта (вертикальной и горизонтальной), а также внешний угол. Если мячик "достигает" границы, то соответствующее приращение координат изменяет знак. Момент смены направления движения озвучен.
Дата добавления: 2016-06-29; просмотров: 1427;