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

Поймай яблоко

Функция Math.abs () (модуль числа) используется, чтобы определить, столкнулись ли объекты. Если из координат одного объекта вычесть координаты другого, получается положительное или отрицательное значение. Например, если первый объект находится на расстоянии 7 пикселов вправо от второго, вы получаете значение 7, если слева – значение – 7. Функция Math.abs () убирает знак, благодаря чему в обоих случаях вы получаете значение 7. Аналогичным образом вы можете проверить, находится ли объект на определенном расстоянии слева или справа от другого.

Если яблоко поймано или упало на землю, вызывается функция removeapple. В первом случае также происходит увеличение счета.

function moveApples() {
    // Проверяем все падающие в данный момент яблоки,
    for (i = firstApple; i <= lastApple; i++) {
        // Определяем координаты яблока.
        x = _root["apple" + i]._x;
        y = _root["apple" + i]._y + appleSpeed;
        // Проверяем, достигло ли яблоко земли,
        if (y > 400) {
            removeApple(i);
            // Проверяем, попало ли оно в корзину.
        }
        else if ((Math.abs(y - fox._y) < 10) and (Math.abs(x - fox._x) < 25)) {
            removeApple(i);
            score += 1;
            // В противном случае яблоко продолжает падать
        }
        else {
            _root["apple" + i]._y = y;
        }
    }
}

При помощи функции removedClip функция removeapple удаляет клип. Она также увеличивает значение переменной firstapple, в результате функция moveapple прекращает перемешать яблоко вниз.

Если яблоко было последним, ролик переходит к кадру "game over". При этом ролик лисы удаляется с экрана.

function removeApple(n) {
    // Убираем яблоко с экрана.
    _root["apple" + n].removeMovieClip();
    // Увеличиваем указатель на первое яблоко на единицу.
    firstApple = n + 1;
    // Проверяем, не последнее ли это яблоко?
    if (n == totalApples) {
        fox.removeMovieClip();
        gotoAndPlay("game over");
    }
}

К сведению

Вышеприведенный код использует установленный по умолчанию размер рабочего поля для ролика – 550x400. Если вы хотите указать другой размер, необходимо внести соответствующие изменения в код. Вы также можете настроить левую и правую границу игрового поля. Выше приведенный код ограничивает расположение яблок и лисы по вертикали диапазоном между 30 и 520 пикселами, задавая ширину границы, размером 30 пикселов. Вы можете их увеличить или уменьшить.

Для остановки анимации первый кадр клипа лисы должен содержать команду stop (). Не забудьте также вставить команду gotoAndPlay в последний кадр клипа.

Ролик содержит динамическую текстовую область, связанную с переменной score, поэтому отображение счета не составит проблемы.

Полная игра (файл Applecatch.fla), состоит из трех кадров. Первый является кадром начала игры и содержит команду stop(). При помощи соответствующей кнопки осуществляется переход к кадру "Play", в котором происходит основное действие игры. Затем следует кадр "Game Over". В отличие от предыдущих игр, использующих различные сцены, кадры данной игры находятся в одной и той же. Но вы можете использовать вариант и с различными сценами.

Другие возможности

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

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

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

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.