|
|||||||||||||||||||||||
Меню:
Главная
Форум
Литература: Программирование и ремонт Импульсные блоки питания Неисправности и замена Радиоэлектронная аппаратура Микросхема в ТА Рубрикатор ТА Кабельные линии Обмотки и изоляция Радиоаппаратура Гибкие диски часть 2 часть 3 часть 4 часть 5 Ремонт компьютера часть 2 Аналитика: Монтаж Справочник Электроника Мощные высокочастотные транзисторы 200 микросхем Полупроводники ч.1 Часть 2 Алгоритмические проблемы 500 микросхем 500 микросхем Сортировка и поиск Монады Передача сигнала Электроника Прием сигнала Телевидиние Проектирование Эвм Оптимизация Автомобильная электроника Поляковтрансиверы Форт Тензодатчик Силовые полевые транзисторы Распределение частот Резисторные и термопарные Оберон Открытые системы шифрования Удк |
[26] бивали" экран, некоторые из них "гасятся" окружностью радиусом 3 пиксела с центром в появившейся точке. Практическое задание 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 и выводимыми только в заданной области в цикле до нажатия клавиши. После каждого заполнения способами а), б), в) - очищать экран. {------------------------------------------------------------------Фрагмент 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; 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 пиксел и высвечивается вновь. Если точка по ходу движения достигнет нижнего края экрана или встретит " преграду" (точку не черного цвета), то она не гасится и генерируется новая точка в верхней части экрана. Практическое задание N 1. 48 Модифицировать программу "снег": 1.Смоделировать град - пикселы должны со звуком подскочить на преграде (нарисуйте прямоугольник) или на нижнем крае экрана . 2.Смоделировать дождь - смещающиеся пикселы должны оставлять след серого цвета, причем на этот цвет не реагировать как на цвет преграды. Дождинки не должны накапливаться на преградах. 3.Увеличить скорость падения снежинок (не забыв усовершенствовать анализатор условия остановки снежинок). Смоделировать образование снежных хлопьев - при достижении нижнего края экрана снежинка должна "обрасти" еще четырьмя пикселами - приобрести форму крестика. 4.Изменяя через 10 циклов "Repeat. . . Until" приращения координат по осям "X" и "Y" в диапазоне -5. . . +5, смоделировать порывистый ветер случайного направления, действующий на снег. Анализировать при этом вылет снежинок за боковые границы экрана. {--------------------------------------------------------Фрагмент N 4 программы " взрыв" ( рисование движущегося массива пикселов с остановкой на границах экрана ).
SetColor(5);Rectangle(x1, y1, x1+9, y1+30);{бомба} ch:= ReadKey;{ задержка до нажатия клавиши } for i:=1 to 100 do begin sound(random(80));delay(1); nosound { звук взрыва } SetColor(0); Rectangle(x1, y1,x1+9, y1+30);{ взрыв бомбы } Repeat for i:=1 to 300 do begin if(X[i]+VX[i] > 0) and (X[i]+VX[i] < Gx) and (Y[i]+VY[i] > 0) and (Y[i]+VY[i] < Gy) then begin{ если пиксел не перелетит за край экрана } PutPixel(X[i],Y[i],0); X[i]:= X[i]+VX[i]; Y[i]:= Y[i]+VY[i]; PutPixel(X[i], Y[i], 14) end{ движение осколков } else begin VX[i]:= 0; VY[i]:= 0; { если пиксел долетел до края экрана } sound(200); delay(2); nosound end Until Keypressed; {-----------------------------------------------------------------} В начале программы генерируется набор пикселов (X[i], Y[i]) в виде прямоугольной области и каждому пикселу предварительно назначается случайное приращение координат (скорость) (VX[i], VY[i]). После нажатия клавиши генерируется звук "взрыва" и пикселы начинают перемещаться. Анализируется возможный выход каждого пиксела за границу экрана. Если выхода не будет, то пиксел продолжает перерисовываться с приращением координат VX[i], VY[i] , иначе пиксел останавливается и генерируется короткий звуковой импульс. Практическое задание N 1. 49 Модифицировать программу "взрыв": 1.Сделать бомбу - в виде квадрата. При достижении краев экрана осколки бомбы должны высвечиваться красным цветом ( в программе использовать массив цветов осколков 2.Сделать бомбу - в виде круга. Осколки бомбы должны снижать скорость при движении. 3.Смоделировать бомбу, падающую с середины верхней части экрана и взрывающуюся при достижении нижнего края экрана. 4.Смоделировать два движущихся по горизонтали снаряда, взрывающихся при столкновении. |
Среды: Smalltalk80 MicroCap Local bus Bios Pci 12С ML Микроконтроллеры: Atmel Intel Holtek AVR MSP430 Microchip Книги: Емкостный датчик 500 схем для радиолюбителей часть 2 (4) Структура компьютерных программ Автоматическая коммутация Кондиционирование и вентиляция Ошибки при монтаже Схемы звуковоспроизведения Дроссели для питания Блоки питания Детекторы перемещения Теория электропривода Адаптивное управление Измерение параметров Печатная плата pcad pcb Физика цвета Управлении софтверными проектами Математический аппарат Битовые строки Микроконтроллер nios Команды управления выполнением программы Перехода от ahdl к vhdl Холодный спай Усилители hi-fi Электронные часы Сердечники из распылённого железа Анализ алгоритмов 8-разрядные КМОП Классификация МПК История Устройства автоматики Системы и сети Частотность Справочник микросхем Вторичного электропитания Типы видеомониторов Радиобиблиотека Электронные системы Бесконтекстный язык Управление техническими системами Монтаж печатных плат Работа с коммуникациями Создание библиотечного компонента Нейрокомпьютерная техника Parser Пи-регулятор ч.1 ПИ-регулятор ч.2 Обработка списков Интегральные схемы Шина ISAВ Шина PCI Прикладная криптография Нетематическое: Взрывной автогидролиз Нечеткая логика Бытовые установки (укр) Автоматизация проектирования Сбор и защита Дискретная математика Kb радиостанция Энергетика Ретро: Прием в автомобиле Управление шаговым двигателем Магнитная запись Ремонт микроволновки Дискретные системы часть 2 | |||||||||||||||||||||