Воспроизведение звука при нажатии на клавишу - Turbo Pascal
Формулировка задачи:
КонецСвета
, Спасибо большое) Всё работает) Рад очень помощи) Но вот думаю может поможешь а то тоже в тупик зашел короче нужно сделать чтобы когда нажимаешь на стрелочку вверх и вниз был звук к примеру 478 или 578 без разницы.) Код клавиш 82 и 72, эт так на всякий случай)КонецСвета
, Тут как бы всё сделано, но вот чисто не пашет как ни пробывал чтобы звук был именно на стрелочки верх и низ.. И вот хоть убейся не могу)Решение задачи: «Воспроизведение звука при нажатии на клавишу»
textual
Листинг программы
uses crt,dos; label l2; type mas=array[1..4] of string; const menu:mas=('1.Сведение об авторе','2.Справка по программе','3.Вычисления','4.Выход'); var a:array[1..20] of integer; pos:integer; k:char;kod:integer; procedure cursize(s:word); var regs:registers; begin with regs do begin AH:=$01; CH:=Hi(s); Cl:=Lo(s); intr($10,regs); end; end; procedure hidcur; begin cursize($2000); end; procedure nc; begin cursize($0607); end; procedure menu1; var i:integer; begin clrscr; window(1,1,80,50); textbackground(blue); clrscr; window(25,20,55,30); textbackground(10); clrscr; for i:=1 to 4 do begin gotoxy(3,i+1); if i=pos then textbackground(3) else textbackground(10); write(menu[i]); end; hidcur; end; begin clrscr; menu1; l2: pos:=1; menu1; k:=readkey; while k<>#13 do begin case k of #72:if pos=1 then begin pos:=4; sound(478); delay(20000); nosound; end else begin pos:=pos-1; sound(578); delay(20000); nosound; end; #80:if pos=4 then begin pos:=1; sound(578); delay(20000); nosound; end else begin pos:=pos+1; sound(478); delay(20000); nosound; end; end; menu1; k:=readkey; kod:=ord(k); case kod of 49:begin sound(478);delay(20000);nosound;end; 50:begin sound(578);delay(20000);nosound;end; 51:begin sound(678);delay(20000);nosound;end; 52:begin sound(778);delay(20000);nosound;exit;end; end; end; case pos of 1:begin sound(478);delay(20000);nosound;end; 2:begin sound(578);delay(20000);nosound;end; 3:begin sound(678);delay(20000);nosound;end; 4:begin sound(778);delay(20000);nosound;exit;end; end; goto l2; end.
Объяснение кода листинга программы
- Создание переменных для хранения позиции курсора и кода нажатия клавиши.
- Создание переменной
k
для хранения символа, нажатого клавишей. - Создание переменной
kod
для хранения числового кода нажатой клавиши. - Создание массива
a
для хранения чисел от 1 до 20. - Создание переменной
pos
для хранения текущей позиции курсора. - Создание переменной
menu
для хранения меню программы. - Создание переменной
i
для цикла, отображающего пункты меню. - Создание переменной
pos
для хранения нового значенияpos
. - Создание переменной
sound
для хранения звукового файла, соответствующего пункту меню. - Создание переменной
delay
для задержки воспроизведения звука. - Создание переменной
nosound
для отключения звука. - Создание переменной
l2
для цикла воспроизведения звука при нажатии клавиши. - Вывод пунктов меню на экран.
- Проверка нажатия клавиши.
- Если нажата клавиша #72, то уменьшить значение
pos
на 1, воспроизвести звук, затем уменьшитьpos
на 1 и воспроизвести звук. - Если нажата клавиша #80, то увеличить значение
pos
на 1, воспроизвести звук, затем увеличитьpos
на 1 и воспроизвести звук. - Если нажата клавиша 49, то воспроизвести звук, затем увеличить
pos
на 1. - Если нажата клавиша 50, то воспроизвести звук, затем увеличить
pos
на 1. - Если нажата клавиша 51, то воспроизвести звук, затем увеличить
pos
на 1. - Если нажата клавиша 52, то воспроизвести звук, затем увеличить
pos
на 1 и выйти из программы.