Использование звука и музыки

Пролог поддерживает два предиката генерации звука: sound и beep. Предикат beep генерирует звук высокой частоты. Он не имеет параметров. Правило, генерирующее три звуковых сигнала, имеет вид:

beep:- beep, beep, beep.

Предикат sound имеет вид: sound(Duration, Frequency). Первый параметр задает продолжительность звукового сигнала в сотых долях секунды, второй-частоту генерируемого звука.

Таблица 4.

Работа со звуком

Нота До До диез Ре Ре диез Ми Фа Фа диез Соль Соль диез Ля Ля диез Си До
Частота                          

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

Программа 2. Тренажер для обучения сложению

Predicates

gen_rand_num(integer)

say_good_work

say_more_work

test_and_reward(integer, integer)

make_exercise_set(integer)

do_cal

Goal

do_cal.

Clauses

do_cal:-

makewindow(1,7,7, “Тренажер для обучения сложению”, 2,20,20,34),

nl,

write(“Вашему вниманию предлагаем упражнения для выполнения”),

make_exercise_set(3),

nl, write(“Желаем удачи! Пока!”),

nl, write(“Нажмите на любую клавишу”),

readchar(_),

removewindow.

make_exercise_set(0):-!.

make_exercise_set(Count):-

gen_rand_num(A),

nl, write(“1-е число ”,A), nl,

gen_rand_num(B),

nl, write(“2-е число ”,B), nl,

C=A+B,

write(“Чему равна сумма?”), nl,

readint(U),

test_and_reward(C,U),

Newcount=Count-1,

make_ exercise_set(NewCount).

gen_rand_num(X):-random(Y), X=Y*5+1.

test_and_reward(C,C):-say_good_work,!.

test_and_reward(_,_):-say_more_work.

say_good_work:-

makewindow(2,7,7, “Хорошая работа!”, 12, 40, 8, 30), nl,

write(“Вы правы”), nl, nl,

write(“Музыка для победителя!”),nl,nl,

sound(4, 262), sound(4, 350),

sound(4, 440), sound(8, 516),

sound(4, 440), sound(112, 516),

nl, nl, write(“Нажмите на любую клавишу”),

readchar(_),

removewindow.

say_more_work:-

makewindow(3,7,7, “Продолжим!”, 14, 6, 7, 28), nl,

write(“Вам нужно поработать ещё”), nl, nl,

beep, beep, beep,

write(“Нажмите на любую клавишу”),

readchar(_),

removewindow.

Правило make_exercise_set задает три контрольных вопроса. Для каждого вопроса правилом gen_rand_num генерируется два случайных целых числа в диапазоне от 1 до 5, эти числа выводятся на экран, затем предлагается ввести ответ, предикат test_and_reward оценивает ответ пользователя.

Задание. Усовершенствуйте программу. Предложите пользователю выбрать 1 из 4 тренажеров и проверить его знания арифметических операций, оценив его способности по 5-бальной шкале.



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: