Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Pascal.DOC
Скачиваний:
23
Добавлен:
21.03.2015
Размер:
1.77 Mб
Скачать

Практическое задание n 1. 46

Модифицировать программу "небо в алмазах":

1. Выводить пикселы в прямоугольниках, расположенных:

в правой нижней четверти экрана (использовать яркие цвета),

в левой верхней четверти экрана (использовать темные цвета).

Увеличить степень "гашения" точек, - чтобы экран был более свободным.

2. Выводить пикселы в прямоугольниках, расположенных:

в левой нижней четверти экрана (использовать яркие цвета),

в правой верхней четверти экрана (использовать темные цвета). Сопроводить появление каждой сотой точки коротким звуковым импульсом с частотой 100 * цвет точки.

Примечание к п. п. 1 и 2 : После высвечивания 5000 пикселов изменять номер графического режима, цвет линий и фона.

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

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

Примечание к п. п. 3 и 4 : Заполнение произвести тремя способами:

а) линиями или окружностями разного радиуса;

б) пикселами, рисующими линии или окружности разного радиуса.

Координаты точек окружности радиуса "r" вычислять по формуле: x=round(r*cos(t)); y=round(r*sin(t)); где 0=< t <=2*Pi;

в) пикселами с координатами, определяемыми функцией Random и выводимыми только в заданной области в цикле до нажатия клавиши.

После каждого заполнения способами а), б), в) - очищать экран.

81

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

Фрагмент N 2 программы "мерцание звезд"

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

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

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

Repeat

for k:= 1 to N do begin i:= random(16);

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

if i= 0 then begin X[k]:= random(Gx); { новые координаты звезд }

Y[k]:= random(Gy) end end

Until KeyPressed;

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

В программе "мерцание звезд" точки неподвижны, их координаты определены в виде массивов X[1. . N], Y[1. . N]. Точки последовательно высвечиваются различными цветами. Если точка гаснет (i= 0), то она случайным образом изменяет свои координаты.

Практическое задание n 1. 47

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

1. Если точка гаснет, то ее положение изменить на несколько пикселов и выводить цветом звезды линию к новым координатам звезды.

2. Если точка гаснет, то звезда "взрывается" - рисуется красная окружность радиусом два пиксела с коротким звуковым импульсом и гашением этой окружности после "взрыва".

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

4. Разделить экран на четыре области, в каждой из которых звезды белого цвета смещать на два пиксела по "Х" , "Y" от центра экрана.

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

Фрагмент N 3 программы "снег"

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

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

for i:=1 to 200 do begin

X[i]:= random(Gx);

Y[i]:= random(Gy div 2); PutPixel(X[i],Y[i],15) end;

Repeat

for i:=1 to 200 do begin

if ( Y[i] < Gy ) and ( GetPixel(X[i],Y[i]+1)= 0 ){ анализ границы }

{ и цвета пиксела }

then begin PutPixel(X[i], Y[i], 0); Y[i]:= Y[i]+1;

PutPixel(X[i], Y[i],15) end { движение пикселов }

else begin { образование новых пикселов }

Y[i]:= random(Gy div 10);

X[i]:= random(Gx); PutPixel(X[i], Y[i], 15) end end

Until keypressed;

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

Сначала генерируется набор координат (X[i], Y[i]) в верхней половине экрана и выводятся белые точки (снежинки). Затем каждая точка гасится, смещается по оси Y на 1 пиксел и высвечивается вновь. Если точка по ходу движения достигнет нижнего края экрана или встретит "преграду" (точку не черного цвета), то она не гасится и генерируется новая точка в верхней части экрана.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]