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