Воспроизведение звука при нажатии на клавишу - 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.

Объяснение кода листинга программы

  1. Создание переменных для хранения позиции курсора и кода нажатия клавиши.
  2. Создание переменной k для хранения символа, нажатого клавишей.
  3. Создание переменной kod для хранения числового кода нажатой клавиши.
  4. Создание массива a для хранения чисел от 1 до 20.
  5. Создание переменной pos для хранения текущей позиции курсора.
  6. Создание переменной menu для хранения меню программы.
  7. Создание переменной i для цикла, отображающего пункты меню.
  8. Создание переменной pos для хранения нового значения pos.
  9. Создание переменной sound для хранения звукового файла, соответствующего пункту меню.
  10. Создание переменной delay для задержки воспроизведения звука.
  11. Создание переменной nosound для отключения звука.
  12. Создание переменной l2 для цикла воспроизведения звука при нажатии клавиши.
  13. Вывод пунктов меню на экран.
  14. Проверка нажатия клавиши.
  15. Если нажата клавиша #72, то уменьшить значение pos на 1, воспроизвести звук, затем уменьшить pos на 1 и воспроизвести звук.
  16. Если нажата клавиша #80, то увеличить значение pos на 1, воспроизвести звук, затем увеличить pos на 1 и воспроизвести звук.
  17. Если нажата клавиша 49, то воспроизвести звук, затем увеличить pos на 1.
  18. Если нажата клавиша 50, то воспроизвести звук, затем увеличить pos на 1.
  19. Если нажата клавиша 51, то воспроизвести звук, затем увеличить pos на 1.
  20. Если нажата клавиша 52, то воспроизвести звук, затем увеличить pos на 1 и выйти из программы.

Оцени полезность:

12   голосов , оценка 4.083 из 5
Похожие ответы