Иллюстрированный самоучитель по созданию Flash-игр

Дедукция

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

После того как игрок указал цвета для пяти мест, он может щелкнуть по кнопке Done, чтобы получить результат. Появление белого камешка свидетельствует о правильно расположенном цвете, черного – о правильном цвете, помешенном не на свое место.

Затем под имеющимся рядом отображаются следующие пять свободных мест вместе с кнопкой Done. На рис. 14.5 показано, как выглядит игра после нескольких шагов.

Иллюстрированный самоучитель по созданию Flash-игр › Головоломки › Дедукция
Рис. 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();
}
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.