Игровой режим отличается от режима обычного тем, что компьютер предлагает вам одну из мелодий выбранную случайным образом и вы должны повторить ее не видя нотной записи, «на слух». Для перехода в игровой режим у меня в проекте служит белая кнопка на рояле. Внешний вид у нее может быть любой, а вот на программном коде, выполняемом при ее нажатии остановимся подробней.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
on (release) {
kol_disk = 6;
if (start == 0) {
start = 1;
for (j=1; j<=kol_disk; j++) {
setProperty("disk"+j, _visible, 0);
}
setProperty(exit, _visible, 1);
setProperty(enc, _visible, 1);
song = "Игровой режим. Будьте внимательны!";
num = random(kol_disk)+1;
ex = eval("obr"+num);
gotoAndPlay(3);
} else {
start = 0;
for (j=1; j<=kol_disk; j++) {
setProperty("disk"+j, _visible, 1);
}
setProperty(exit, _visible, 0);
setProperty(enc, _visible, 0);
}
}

Во второй строчке кода задается переменная kol_disk, она хранит количество музыкальных фрагментов, доступных программе. Далее идет условный оператор, определяющий направление перехода. Дело в том, что данная кнопка – переключатель, при первом нажатии она переводит в игровой режим, а при повторном нажатии возвращает в режим учебы. О том, в каком режиме находится сейчас программа, сигнализирует переменная start.

Если при нажатии на кнопку переменная start равна нулю, значит сейчас учебный режим. Переменная start меняет свое значение, строки 5-7 скрывают все кнопки для выбора музыкальных фрагментов - все объекты вида "disk"+j изменяют свойство видимости на ноль. Разумеется, для того, чтобы свойство изменилось предварительно каждый диск должен получить свое уникальное имя на панели «Свойства». Изменяют свойство видимости дополнительные кнопки, видимые только в игровом режиме: кнопка «повторить музыкальный фрагмент», ее имя в программном коде enc и кнопка «выход из игрового режима» ее имя exit (строки 8,9). В десятой строке в динамическое поле song помещается предупредительная надпись (рисунок 19). В одиннадцатой строке переменная num (номер проигрываемого музыкального фрагмента) принимает случайное значение, использование функции random() такое же как в языке Pascal. После всех этих приготовлений управление передается в третий ключевой кадр.

Дополнительные кнопки игрового режима
Рис. 19. Дополнительные кнопки игрового режима.

В третьем кадре считывается код случайного музыкального фрагмента, который после передается в следующий ключевой кадр. Отличие от учебного режима состоит в том, что не должен формироваться нотный стан. Для этого добавлен небольшой программный код:

1
2
3
4
5
if (start == 1) {
for (j=1; j<=50; j++) {
duplicateMovieClip("n0", "n0"+j, j);
}
}

Он дублирует некоторый символ n0, предварительно созданный за пределами холста на слое «нотный стан». Данный символ дублируется на те же самые слои, что и ноты образца, а значит, символ n0 стирает их. Так как сам он находится вне холста, то его дубликаты будут не видны игроку. Внешний вид символа может быть любой.
Действие кнопки «повторить музыкальный фрагмент» предельно просто:

1
2
3
on (release) {
gotoAndPlay(3);
}

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

1
2
3
4
5
6
7
8
on (release) {
start = 0;
for (j=1; j<=kol_disk; j++) {
setProperty("disk"+j, _visible, 1);
}
setProperty(exit, _visible, 0);
setProperty(enc, _visible, 0);
}

В нем обнуляется переменная start, диски с музыкальными образцами становятся вновь видимыми, а дополнительные кнопки exit и enc наоборот принимают видимость равную нулю.

Основная работа по созданию проекта закончена. У вас должен проект, в котором можно играть на виртуальном рояле, воспроизводить музыкальные образцы, переходить в игровой режим и там повторять «на слух» предложенные мелодии. Для предания проекту блеска нужно добавить несколько оформительских элементов.