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

Подстрели лису

Функцию onClipEvent (mouseDown) из игры "Поймай лису" необходимо изменить, учесть условия игры "Подстрели лису". Прежде всего, в качестве активной точки курсора будут использоваться координаты клипа "cursor", а не реальные координаты курсора мыши, которые с обновлением кадра могут немного измениться. Затем в функции проверяется. попал ли пользователь по какому-нибудь из семи клипов. Если один из клипов поражен, в клипе "fox" внутри пораженного клипа осуществляется переход к кадру "hit" – пользователь видит, что попал в лису. Значение переменной score увеличивается в случае поражения лисы, значение переменной shotsLeft уменьшается в любом случае.

Игра заканчивается, когда с помощью функции onClipEvent (enterFrame) перед созданием новой лисы обнаруживается, что у игрока не осталось выстрелов. Ролик завершается не сразу после последнего выстрела, а через одну – две секунды.

onClipEvent(mouseDown) {
    // Показываем анимацию выстрела.
    _root["cursor"].gotoAndPlay("blast");
    // Определяем координаты курсора.
    x = _root._root["cursor"]._x;
    y = _root._root["cursor"]._y;
    // Проверяем, в какую лису попал пользователь,
    for (i = 0; i < 7; i++) {
        // Проверяем на попадание только "высунувшихся" лис.
        if (_root["fox" + i]["fox"]._currentFrame <= 1) {
            // Проверяем, попал ли пользователь
            //в какую-либо из лис.
            if (_root["fox" + i].hitTest(x, y, false)) {
                // Показываем, что попал.
                _root["fox" + i].fox.gotoAndPlay("hit");
                // Увеличиваем счет.
                score++;
            }
        }
    }
    // Уменьшаем число оставшихся выстрелов.
    shotsLeft--;
    // Обновляем счет, отображаемый на экране.
    _root.showScore = "Score:" + score;
    _root.showShotsLeft = "Shots Left:" + shotsLeft;
}

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

Следующая функция, onClipEvent(unload), запускается перед исчезновением клипа с рабочего поля. Это происходит при завершении игры. В данном случае функция необходима, чтобы сделать курсор видимым.

onClipEvent(unload) {
    // Отображаем обычный курсор.
    Mouse.show();
}

К сведению

После создания кода необходимо присвоить копиям клипа имена с "fox0" по "fox6", соответствующие их именам в библиотеке. В нашем примере центр всех клипов с изображениями лис совпадает с центром рабочего поля. Это было сделано следующим образом: анимация была добавлена в главную временную шкалу, выделена, скопирована при помощи команды Edit › Copy Frames (Редактировать › Копировать кадры) и вставлена в пустой клип.

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

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

Имейте в виду, что игра дает возможность набирать более 50 очков. Каким образом? В ходе игры лисы начинают появляться друг за другом все быстрее и быстрее. Через некоторое время на экране одновременно будут появляться несколько лис. Когда пути двух лис пересекаются, вы можете убить их одним выстрелом, однако это требует сноровки. Если хотите, отмените данное свойство.

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

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