TURBO PASCAL

Новости       

Программы

Turbo Pascal

Игры

Документация

"Странности"

FAQ

Ссылки

Благодарности 

Гостевая книга

Спонсор

От автора

 

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

 

На первую страницу

Rambler's Top100 PROext: Top 1000
Rambler's Top100

(с) Все права защищены.

По всем интересующим вопросам прошу писать электронный адрес

Hosted by uCoz