Дедукция
Игрок может щелкнуть по любому пустому месту, чтобы изменить его цвет. Цвет изменяется в соответствии с шестью вариантами: пятью различными цветами и пустым местом.
После того как игрок указал цвета для пяти мест, он может щелкнуть по кнопке Done, чтобы получить результат. Появление белого камешка свидетельствует о правильно расположенном цвете, черного – о правильном цвете, помешенном не на свое место.
Затем под имеющимся рядом отображаются следующие пять свободных мест вместе с кнопкой Done. На рис. 14.5 показано, как выглядит игра после нескольких шагов.
Рис. 14.5. Так выглядит игровое поде после нескольких попыток пользователя
Подготовка ролика
В клипе "rock" содержится восемь кадров, первый из которых показывает пустое место. Кадры со второго по шестой отображают пять цветов, из которых должен выбрать пользователь. Седьмой и восьмой кадры отображают белые и черные камешки, имеющие метки "white" и "black" соответственно, чтобы код мог обращаться к ним.
Теперь осталось поместить на рабочее поле фон и указания. Камешки и кнопка Done создаются кодом. Для клипа "rock" установите имя ("rock") в панели Linkage Properties. Я также создал небольшую кнопку, чтобы можно было перейти внутрь клипа камешка. Кнопку " Done"создать очень просто, но так как нам нужно управлять ее положением, мы должны поместить ее внутри клипа и указать для него свойство "linkage".
Создание кода
Код игры целиком расположен в первом кадре основной временной шкалы, начинается он с установки целого набора переменных. Эти числа определяют положение различных элементов на рабочем поле при их создании. Вместо того чтобы распределять эти переменные по всему коду, я собрал их в начале программы – так их будет проще найти и изменить.
Последовательность решения задается с помощью пяти случайных чисел и хранится в массиве solution. В переменной row хранится номер попытки. Для начала игры вызывается функция createRow.
initGame();
stop();
function
initGame() {
// Определяется расположение и расстояние между элементами.
topRowLoc
=
60
;
leftColLoc
=
280
;
roghtColLoc
=
390
;
horizSpace
=
21
;
vertSpace
=
23
;
solutionx
=
336
;
solutiony
=
320
;
// Создается произвольная последовательность решения
solution
=
new
Array();
for
(i
=
0
; i
<
5
; i
+
+
) {
solution.push(int(Math.Random()
*
5
));
}
// Инициализируются переменные.
rows
=
new
Array();
row
=
0
;
// Устанавливается первый ряд.
createRow();
}