Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Динамиком и таймером



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

В модуль CRT включены три процедуры, с помощью которых можно запрограммировать произвольную последовательность звуков.

Процедура Sound заставляет динамик звучать с нужной частотой. Заголовок процедуры:

Procedure Sound(F: Word);

Здесь F — выражение типа Word, определяющее частоту звука в Герцах. После обращения к процедуре включается динамик и управление немед­ленно возвращается в основную программу, в то время как динамик будет звучать впредь до вызова процедуры NoSound.

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

Процедура Delay. Обеспечивает задержку работы программы на за­данный интервал времени. Заголовок процедуры:

Procedure Delay(T: Word);

Здесь Т — выражение типа Word, определяющее интервал времени (в миллисекундах), в течение которого задерживается выполнение сле­дующего оператора программы.

Для генерации звукового сигнала обычно используется вызов опи­санных процедур по схеме Sound —Delay—NoSound. Следующая программа заставит ПК воспроизвести простую музыкальную гамму. Используемый в ней массив F содержит частоты всех полутонов в первой октаве от «до» до «си». При переходе от одной октавы к соседней, частоты изменяются в два раза.

Uses CRT; const

F: array [1..12] of Real =

(130.8, 138.6, 146.8, 155.6, 164.8, 174.6, 185.0, 196.0, 207.7, 220.0, 233.1, 246.9); (Массив частот 1-й октавы}

Temp = 100; {Темп исполнения}

var

k,n: Integer;

begin

{Восходящая гамма}

for k:= 0 to 3 do

for n:= 1 to 12 do

begin

Sound(Round(F[n]*(l shl k)));

Delay(Temp);

NoSound

end;

{Нисходящая гамма)

for k:= 3 downto 0 do

for n:= 12 downto 1 do

begin

Sound(Round(F[n]*(1 shl k)));

Delay(Temp);

NoSound

end

end.

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

Program DemoDvigenie;

Uses CRT;

Var i,b:integer;

Begin

TextBackGround(0);

ClrScr;

i:=2;

Window(15,2,55,24);

TextBackGround(Blue);

ClrScr;

Window(34,i,35,i);

TextBackGround(white);

ClrScr;

b:=2;

repeat

for i:=b to 24 do

begin

Window(15,2,55,24);

TextBackGround(Blue);

ClrScr;

Window(34,i,35,i);

TextBackGround(white);

ClrScr;

delay(1000);

end;

for i:=24 downto b do

begin

Window(15,2,55,24);

TextBackGround(Blue);

ClrScr;

Window(34,i,35,i);

TextBackGround(white);

ClrScr;

delay(1000);

end;

b:=b+2;

until b>24;

readln;

End.





Дата публикования: 2015-06-12; Прочитано: 182 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...