|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Меню:
Главная
Форум
Литература: Программирование и ремонт Импульсные блоки питания Неисправности и замена Радиоэлектронная аппаратура Микросхема в ТА Рубрикатор ТА Кабельные линии Обмотки и изоляция Радиоаппаратура Гибкие диски часть 2 часть 3 часть 4 часть 5 Ремонт компьютера часть 2 Аналитика: Монтаж Справочник Электроника Мощные высокочастотные транзисторы 200 микросхем Полупроводники ч.1 Часть 2 Алгоритмические проблемы 500 микросхем 500 микросхем Сортировка и поиск Монады Передача сигнала Электроника Прием сигнала Телевидиние Проектирование Эвм Оптимизация Автомобильная электроника Поляковтрансиверы Форт Тензодатчик Силовые полевые транзисторы Распределение частот Резисторные и термопарные Оберон Открытые системы шифрования Удк |
[28] 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". Принцип движения мяча: рисование, задержка, рисование цветом фона (стирание), приращение координат в цикле. По цвету пиксела анализируется положение края мяча относительно границ лабиринта (вертикальной и горизонтальной), а также внешний угол. Если мячик "достигает" границы, то соответствующее приращение координат изменяет знак. Момент смены направления движения озвучен. Практическое задание N 1. 53 Модифицировать программу "мячик в коробке": 1.Задать лабиринт в виде прямоугольника, содержащего три вытянутых прямоугольника со стенками разного цвета. Частота звука при отражении мяча от стенки должна зависеть от цвета стенки. 2.Задать лабиринт в виде прямоугольника содержащего две наклонные линии. чивать на 0.02,с. задержку движения мяча после каждого удара о стенку. 3.Запрограммировать движение двух мячей разного цвета в лабиринте. Замедлять движение мячей, увеличивая задержку на 0.001,с. после каждого шага рисования мячей. 1. 15. 3. Рисование геометрических фигур 1. 15. 3. 1. Построение заполненных фигур Ряд графических процедур выполняет построение заполненных фигур - фигур с замкнутым контуром, автоматически заполняемых сразу после построения. По умолчанию заполнение производится сплошным белым цветом. Цвет и стиль (орнамент) заполнения можно устанавливать из стандартного набора BGI или определять самим. SetFillStyle(P, N); - процедура установки орнамента P=0, 1, . . . , 12 и -1 цвета с номером "N" для заполняемых фигур. P = 0 - сплошное заполнение цветом фона, при этом значение "N" игнорируется, P = 1 - сплошное заполнение цветом с номером "N", P = 2. . . 11 - стандартный набор орнаментов BGI, P = 12 - орнамент и цвет определяет пользователь. SetFillPattern(PP, N); процедура установки орнамента пользователя PP и цвета с номером "N" для заполняемых фигур. Параметр PP имеет тип FillPatternType или array [1. . 8] of byte. Байт состоит из восьми битов и соответствует ряду из 8 пикселов, т. е. параметр РР определяет элемент орнамента размером 8*8 пикселов (восемь рядов по восемь пикселов). Если бит равен 1, то пиксел высвечивается заданным цветом, если бит равен 0 - текущим цветом фона. Пример орнамента в виде буквы Y: элемент орнамента двоичные числа шестнадцатеричные числа 1 2 3 4 5 6 7 8 Шестнадцатеричные цифры соответствуют двоичным тетрадам цифр: Причем, двоичное число разбивается на тетрады цифр с конца числа, а шестнадцате-ричное число получается заменой каждой тетрады соответствующей цифрой с добавлением в начале числа символа "$". Орнамент удобно задавать, используя переменные с начальным значением (типизированные константы), например: {оператор описания:} Const Bukva Y: FillPatternType=($81,$C3,$66,$3C,$18,$18,$18,$18 ); {оператор выполнения:} SetFillPattern(Bukva Y, 4); Можно добавлять один орнамент к другому используя логические операции, например, A и B - исходные орнаменты, Z - результирующий орнамент. Тогда: Z:= A and B; - орнамент из совпадающих единичных частей исходных орнаментов, Z:= A or B; - орнамент с добавлением единичных частей исходных орнаментов, Z:= A xor B; - орнамент из несовпадающих единичных частей исходных орнаментов, Z:= not A; - орнамент инверсный (обратный) к исходному орнаменту. Z:= A xor A; - обнуление, Z:= A xor (not A); - сплошное заполнение орнамента. Приведем процедуры построения заполненных установленным орнаментом фигур. Граница заполняемых фигур рисуется текущим цветом для линий. Bar(X1, Y1, X2, Y2); - построить заполненный прямоугольник с заданными координатами левого верхнего (X1, Y1) и правого нижнего (X2, Y2) углов. Аналог процедуры: Rectangle(X1, Y1, X2, Y2);. Bar3d(X1, Y1, X2, Y2, d, t); - построить параллелепипед с заполненной передней гранью. Координаты углов: (X1, Y1), (X2, Y2), глубина "d". Переменная "t" типа boolean задает вывод верхней грани. При t=TopOn (true) верхняя грань показывается, при t=TopOff (false) - нет. FillEllipse(X, Y, RX, RY); построить заполненный эллипс с центром в точке (X, Y) и радиусами ( полуосями ) : RX - по горизонтали, RY - по вертикали. построить заполненный сектор эллипса. A1 и A2 - начальный и конечный углы (в градусах), отсчитываемые против часовой стрелки относительно направления оси Х. Аналог процедуры: Ellipse(X, Y, A1, A2, RX, RY); строит сектор эллипса без автоматического заполнения. Sector(X, Y, A1, A2, RX, RY); PieSlice(X, Y, A1, A2, R); построить заполненный сектор круга с центром в точке (X, Y) и радиусом R. Ана- лог процедуры: Arc(X, Y, A1, A2, R); строит дугу окружности. FillPoly(N, M); - заполнить произвольную плоскую фигуру с границей, описанной массивом точек. N - число точек границы, М - параметр - переменная типа PointType, определяемая в модуле Graph в виде: TYPE PointType = Record x, y: Integer End; В программе массив можно описать операторами: Const N=100; Var M: array[1..N] of PointType; Присвоение значений можно провести в цикле: For i:=1 to 3 do begin M[i].x:=random(95); M[i].y:=random(95) end; Приведем пример программы, выводящей два прямоугольника с орнаментами пользователя (bukva Y и Red 50), а затем демонстрирующей набор стандартных орнаментов на передней грани параллелепипедов: $18, $AA, $18, $55, $18, $AA, $18) $55) uses Graph;Const bukva Y: FillPatternType=($81, $C3, $66, $3C, Red 50: FillPatternType=($AA, $55, $AA, $55, var i, x1, y1, x2, y2, Gd, Gm : integer; Begin Gd:= Detect; InitGraph(Gd, Gm, ); SetFillPattern(Red 50, Red); Bar(250, 10, 350, 110); SetFillPattern(bukva Y, Blue); Bar(340, 30, 440, 130); { стандартный набор из 12 орнаментов BGI выводим цветом с номером "11" } for i:=0 to 11 do begin SetFillStyle(i, 11); { орнамент - 50% красных пикселов } { орнамент - синяя буква "Y" } |
Среды: 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 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||