АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Практическое задание N 1. 49

Читайте также:
  1. Window(x1, y1, x2, y2); Задание окна на экране.
  2. В основной части решается практическое задание.
  3. Глава 1. Первое практическое занятие по методу ПМТ
  4. Домашнее задание
  5. Домашнее задание
  6. Домашнее задание
  7. Домашнее задание
  8. Домашнее задание
  9. Домашнее задание
  10. Домашнее задание
  11. Домашнее задание
  12. Домашнее задание

Модифицировать программу "взрыв":

 

1. Сделать бомбу - в виде квадрата. При достижении краев экрана осколки бомбы должны высвечиваться красным цветом (в программе использовать массив цветов осколков).

2. Сделать бомбу - в виде круга. Осколки бомбы должны снижать скорость при движении.

3. Смоделировать бомбу, падающую с середины верхней части экрана и взрывающуюся при достижении нижнего края экрана.

4. Смоделировать два движущихся по горизонтали снаряда, взрывающихся при столкновении.

 

{------------------------------------------------------------------

Фрагмент N 5 программы "цветные волны точек"

(рисование движущегося массива пикселов с отражением от границы экрана).

------------------------------------------------------------------}

for k:= 1 to N do begin X[k]:= random(Gx); { координаты пиксела }

Y[k]:= random(40);

P[k]:= random(7)+9; { цвет пиксела }

VX[k]:=-2+random(5); VY[k]:=-6+P[k] { приращение координат }

end;

Repeat

for k:= 1 to N do begin

{ анализ границ экрана }

if (X[k]+VX[k]<0) or (X[k]+VX[k]>Gx) then VX[k]:= -VX[k];

if (Y[k]+VY[k]<0) or (Y[k]+VY[k]>Gy) then VY[k]:= -VY[k];

PutPixel(X[k], Y[k], 0); { стирание пиксела }

X[k]:=X[k]+VX[k]; Y[k]:=Y[k]+VY[k]; { новые координаты пиксела }

PutPixel(X[k], Y[k], P[k]) { рисование пиксела }

End

Until KeyPressed;

{-----------------------------------------------------------------}

 

В верхней части экрана генерируются N точек цвета P[k]. Приращение координат точек задается в виде массивов VX, VY, т. е. скорость движения каждой точки постоянная, а направление изменяется при достижении границы экрана. Вертикальная скорость задается одинаковой для точек одного цвета, что создает иллюзию волнового (фронтального) движения. По горизонтали скорость выбирается случайным образом. Алгоритм создания перемещения: точка гасится пикселом с цветом фона и высвечивается вновь после ее смещения.

 

 

Практическое задание N 1. 50

Модифицировать программу "цветные волны точек":

 

1. Создать два перекрещивающихся набора волн: по горизонтали и по вертикали.

2. Изменить условие отражения точек от границ экрана: при достижении горизонтального края должны "прилипать" с изданием звука точки одного цвета, затем другого и т. д. до остановки всех точек.

3. Сгенерировать волны, движущиеся из левой верхней четверти экрана по диагонали. Изменять цвет точек при каждом их отражении от границ экрана.

4. Сгенерировать две волны, движущиеся из правого и левого верхних углов экрана по диагонали. Уменьшать скорость точек при каждом их отражении от границ экрана.

 

{-----------------------------------------------------------------

Фрагмент N 6 программы "молекулы газа в поле тяготения"

(рисование массива пикселов, хаотично перемещающихся в заданном направлении).

------------------------------------------------------------------}

for k:= 1 to N do begin X[k]:= random(Gx);

Y[k]:= random(Gy);

P[k]:= random(7)+9 end;

Repeat

for k:= 1 to N do begin

PutPixel(X[k], Y[k], 0);

dx:= -25 + random(51); dy:= -25 + random(71);

if (X[k]+dx > 0) and (X[k]+dx < Gx) then X[k]:= X[k] + dx;

if (Y[k]+dy > 0) and (Y[k]+dy < Gy) then Y[k]:= Y[k] + dy;

PutPixel(X[k], Y[k], P[k])

End

Until KeyPressed;

{-----------------------------------------------------------------}

В программе определены массивы координат точек X[1.. N], Y[1.. N] и цвета P[1.. N]. Точки гасятся, случайным образом смещаются их координаты на dx, dy, а затем точки вновь высвечиваются прежним цветом - создается иллюзия движения. Причем dx генерируется в диапазоне -25... 25, а dy - в диапазоне -25... 45, поэтому точки стремятся к нижней границе экрана, имитируя поведение молекул газа в толстом слое атмосферы. Введено ограничение на перемещение - если при очередном назначении dx или dy точка выйдет за границу экрана, то изменения соответствующей координаты не произойдет.

 


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.006 сек.)