Практическое задание 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". Принцип движения мяча: рисование, задержка, рисование цветом фона (стирание), приращение координат в цикле. По цвету пиксела анализируется положение края мяча относительно границ лабиринта (вертикальной и горизонтальной), а также внешний угол. Если мячик "достигает" границы, то соответствующее приращение координат изменяет знак. Момент смены направления движения озвучен.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: