Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Grafika_Turbo-Pascal.doc
Скачиваний:
24
Добавлен:
08.03.2015
Размер:
362.5 Кб
Скачать

Управление звуком.

Работу со звуком в модуле Crt обеспечивают две процедуры:

включение сигнала заданной частоты :

Sound(N:word)

отключения сигнала:

NoSound.

Процедура Sound генерирует звуковые сигналы частотой N,изменяющейся в пределах 37-32767 Гц. Громкость звука не регулируется, сигнал будет звучать до момента его выключения процедурой NoSound.

Для организации паузы в работе программы определена процедура, выполняющая задержку на заданное число миллисекунд:

Delay(N:word).

При выводе звуковых сигналов обычно используются все указанные процедуры вместе.

Пример.

Uses Crt;

Begin

Sound(220); { включения звука с частотой 220}

Delay(300); { пауза на 0.3 сек }

NoSound; { отмена звука}

End.

Задание.

Используя процедуры Sound, Nosound, Delay оформите вывод на экран музыкального слова " К О Л О Б О К " . Вывод каждой буквы сопроводить звуковым сигналом частотой, соответствующей порядковому номеру символа в кодовой таблице ( функция ORD),увеличенному в 100 раз. Время звучания каждой буквы 1 секунда.

Текстовые окна.

Window(x1,y1,x2,y2:byte);

Данная процедура определяет на экране текстовое окно с координатами верхнего левого угла экрана x1,y1, нижнего правого x2,y2. Максимальный размер окна определяется выбранным режимом. Режиму с 80 столбцами соответствует окно (1,1,80,25),режиму с 40 столбцами окно (1,1,40,25). Процедура Window помещает курсор в т.(1,1) установленного окна.

Многие процедуры и функции CRT работают относительно координат текущего окна, включая Window, ClrEol, ClrScr,DelLine, GotoXY, InsLine, WhereX, WhereY и все процедуры ввода/вывода. Координаты текущего окна хранятся соответственно в переменных WindMin и WindMax типа word, и отсчитываются отностительно точки с координатами (0,0), а не (1,1). Младший байт содержит значение координаты Х, а старший байт Y, поэтому координаты верхнего левого угла определяются выражениями:

x1:=Lo(WindMin),

y1:=Hi(WindMax),

координаты правого нижнего:

x2:=Lo(WindMax) ,

y2:=Hi(WindMax).

Пример.

(* вывод на экран окон произвольного размера *)

(* различного цвета фона *)

Uses crt;

Var x,y:integer;

Begin

ClrScr;

Randomize;

repeat

x:=random(MaxX);

y:=random(MaxY);

Window(x,y,x+random(10),y+random(8)); { определение }

TextbackGround(random(16)); { размера окна }

Delay(100);

ClrScr; { заполнеие фоном }

until KeyPressed;

End.

Задание.

Вывести изображение российского трехцветного флага в центре экрана размером 30*15. Каждая цветовая полоса задается текстовым окном ( ширина 30 позиций, высота 5) и заполняется соответствующим цветом.

Использование клавиатуры.

Клавиатура - это основное средство ввода информации в ПЭВМ , поэтому гибкая обработка сигналов с клавиатуры является важным элементом создания эффективных программ.

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

Сдандартная клавиатура имеет три типа клавиш :

символьные ( буквы , цифры, знаки арифметических операций, знаки пунктуации и специальные ENTER, ESC, BACKSPACE, TAB);

управляющие ( функциональные F1-F10, клавиши перемещения курсора, Alt+<другие клавиши>, Ctrl+<другие клавиши>, Shift+<другие влавиши>).;

сдвига (смена регистов Ctrl,Alt,Shift, фиксации регистров CapsLock,ScrollLock,NumLock, вспомогательные клавиши).

Символьные клавиши генеируют при нажатии код в виде одного значения.

Управляющие клавиши генерируют расширенный код сканирования, состоящий из двух значений. Первое является признаком управляющей клавиши , второе содержит код сканирования.

Клавиши сдвига имеют коды , которые не распознаются средствами Паскаля. Обработка кодов производится на системном уровне.

В модуле Crt определены две дополнительные функции управления клавиатурой: ReadKey и KeyPressed.

KeyPressed:boolean возвращает значение true если на клавиатуре была нажата клавиша, и false в противном случае. При этом введенные символы из буфера клавиатуры не удаляются. Данную функцию можно использовать для завершения цикла по нажатию любой клавиши.

Пример 1.

(* использование функции ReyPressed *)

Uses Crt;

Begin

(* заполнение экрана до нажатия любой из клавиш *)

Clrscr;

Randomize;

repeat

GotoXY(Random(70),Random(50));

write('привет !');

delay(300)

Until KeyPressed;

End.

Readkey:char.

Данная функция предназначена для управления работой клавиатуры и возвращает код нажатой клавиши. Символ соответствующей нажатой клавиши на дисплее не отображается . При использовании клавиш управления функция ReadKey сначала получает значение нулевого символа (#0), следующее обращение к ReadKey возвращает расширенный код клавиши.

Функция ReadKey считывает символ из буфера клавиатуры с одновременным его удалением из буфера или ожидает нажатия какой-либо клавиши.

Пример.

{ анализ вводимых пользователем клавиш }

Uses Crt;

var ch:char;

Begin

ClrScr;

repeat

write(' Нажмите клавишу :');

ch:=ReadKey;

if ch=#0

then { расширенный код сканирования }

begin

ch:=readkey;

write(' Клавиша ');

case ch of

#59..#68 : writeln('функциональная: F1-F10');

#82 : writeln('вставка : Ins');

else

begin

write(' перемещения курсора');

writeln(' расширенный код = ',ord(ch))

end

end ; {case}

end

else writeln(' код символа = ',ord(ch))

until ch=#27 ; { клавиша Esc }

ch:=ReadKey { ожидание нажатия клавиши

для выхода из программы }

end.

В приложении 1 приведена кодовая таблица ПЭВМ и все расширенные коды сканирования.

Задание.

Используя рассмотренные процедуры разработать программу,которая по нажатию клавиш:

«стрелка вправо и влево» меняет цвет фона (по кругу от 0до 7)

«стрелка вверх и вниз» меняет цвет символов ( от 0до 15 )

- алфавитно-цифровой клавиатуры воспроизводит данный символ на экран дисплея.

- Ecs завершает работу программы и восстанавливает первоначальные параметры цветности.

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