|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Практическое задание 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". Принцип движения мяча: рисование, задержка, рисование цветом фона (стирание), приращение координат в цикле. По цвету пиксела анализируется положение края мяча относительно границ лабиринта (вертикальной и горизонтальной), а также внешний угол. Если мячик "достигает" границы, то соответствующее приращение координат изменяет знак. Момент смены направления движения озвучен.
Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.003 сек.) |