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

Игровой автомат

Подготовка ролика

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

Клип "spin" начинается с пустого кадра, где он "ждет", пока игрок не щелкнет по рычагу. Кадр прозрачный, так что сквозь него виден клип "symbols".

В остальных кадрах клипа "spin" находится размытая анимация. За изображениями, показанными на рис. 15.2, расположен белый непрозрачный фон, закрывающий клип "symbols" во время вращения колес.

В клипе "symbols" находятся семь кадров, во всех содержатся разные символы. В ролике Slotmachine.fla это изображения желудя, яблока, листа, бревна, луны, солнца и лисы.

Создание кода

Большая часть кода для этой игры находится в основной временной шкале. Однако сначала разберем те фрагменты кода, которые относятся к клипам.

В ролике Slotmachine.fla под клипом с рычагом размещена кнопка. К ней прикреплен простой сценарий, который вызывает функцию pull, находящуюся в основной временной шкале.

on(release) {
    pull();
}

В клипе "spin" содержатся два небольших сценария. Команда stop () находится в первом.кадре. Сценарий, который уменьшает значение счетчика numTimes на единицу, располагается в последнем кадре. Если значение счетчика равно нулю, сценарий переходит к первому кадру ролика и сообщает об этом функции в основной временной шкале. В противном случае клип снова возвращается ко второму кадру.

numTimes--;
if (numTimes <= 0) {
    gotoAndStop(1);
    _root.spinDone(_name);
}
else {
    gotoAndPlay(2);
}

Большой фрагмент программы в основной временной шкале определяет, сколько денег выиграл пользователь, если выиграл вообще. Программа начинается с того, что случайным образом выбирает кадр для трех символов и предоставляет игроку $100, на которые он может играть в этой виртуальной игре.

initGame();
stop();
function initGame() {
    // Случайным образом выбираем кадры для трех символов,
    for (i = l; i < 4; i++) {
        _root["symbol" + i].gotoAndStop(randomSymbol());
    }
    // Начинаем со $100.
    cash = 100;
    showCash();
}

Вместо того чтобы отображать сумму, имеющуюся у игрока, просто цифрами, следующая функция помещает перед ней знак доллара и добавляет переменную cash в displayCash. Эта переменная связана с текстовым полем на рабочем поле.

// Отображаем сумму в долларах,
function showCash() {
    cashDisplay. = "$" + cash;
}

Когда игрок щелкает по рычагу, происходит несколько событий. Сначала из суммы наличных денег игрока вычитается $1. Затем клип "arm' переходит ко второму кадру, то есть показывается, что рычаг переходит в нижнее положение. Затем все три клипа "spin" начинают проигрываться. Каждому клипу сообщаются различные значения переменной numTimes – 8.6 и 4 – то есть первая анимация будет проигрываться восемь раз, вторая – шесть и третья – четыре. Также здесь определяется результат каждого вращения, устанавливаются клипы "symbol", хотя они скрыты за непрозрачными анимациями "spin" до тех пор, пока эти анимации не будут проиграны.

// Рычаг переходит в нижнее положение,
function pull();
{
    // Когда рычаг приводится в действие,
    // каждый раз вычитаем один доллар.
    cash--;
    showCash();
    // Воспроизводим анимацию рычага.
    _root["arm"].gotoAndPlay(2);
    // Воспроизводим анимацию вращения,
    for (i = l; i < 4; i++) {
        // Сообщаем, сколько раз нужно вращать барабан.
        _root["spin" + i].numTimes = 8 - i * 2;
        _root["spin" + i].gotoAndPlay(2);
    }
    // Выбираем результат для каждого символа случайным образом.
    for (i = l; i < 4; i++) {
        _root["symbol" + i].gotoAndStop(randomSymbol());
    }
}
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.