Поймай яблоко
Поймай яблоко
Исходный файл: Applecatch.fla
В первой игре "Поймай яблоко" лиса будет двигаться в нижней части экрана и пытаться поймать яблоки, падающие с дерева. На рис. 9.1 показан фрагмент игры. Полный ролик находится на Web-сайте в файле Applecatch.fla.
Рисунок 9.1. Элементами игры «Поймай яблоко» являются лиса в нижней части экрана и яблоки, падающие сверху
Задача проекта
Лисой можно управлять при помощи клавиш «влево» и «вправо». Лиса будет передвигаться в течение всего времени, пока пользователь удерживает одну из клавиш. Перед правой или левой границей экрана лиса автоматически остановится.
Яблоки падают из произвольных мест верхней части экрана и через произвольный интервал времени, но не слишком часто. Вначале яблоки падают медленно, но в ходе игры скорость их падения увеличивается.
После того как упадет определенное количество яблок, игра завершается. Счет будет равен количеству пойманных лисой яблок.
Подход
Для управления перемещением лисы используется объект Key. Он определяет, удерживает ли игрок клавишу (со стрелкой вправо или влево).
Для создания объектов-яблок используется функция attachMovie. Яблоки помещаются в произвольные места в верхней части экрана, а затем начинают падать и либо ловятся лисой, либо достигают нижней границы экрана.
После создания яблока значение счетчика timeSinceLastApple сбрасывается на 0. При каждом новом обращении к кадру его значение увеличивается. Следующее яблоко создается только тогда, когда счетчик принимает значение 20. Это означает, что яблоко может быть создано только через 20 кадров после появления предыдущего.
Скорость падения яблока определяется переменной appleSpeed. Каждый раз при падении яблока переменная увеличивается. Таким образом, чем дольше длится игра, тем быстрее падают яблоки.
Клип яблока удаляется либо после попадания в корзину, либо при достижении нижней границы экрана. Для того чтобы определить, попало ли яблоко в корзину, координаты яблока сравниваются с координатами корзины. Для облегчения вычислений центр координат клипа с лисой находится в середине корзинки. На рис. 9.2 показан этот клип (его центр отмечен крестиком).
Рисунок 9.2. Центр координат клипа с лисой находится в середине корзинки
После сбрасывания определенного количества яблок игра заканчивается. Счетом будет служить количество пойманных яблок, отображаемое в правом верхнем углу экрана.
Подготовка ролика
Фон ролика представляет собой сложное изображение, которое, однако, не играет никакой роли. Активными элементами игры являются только яблоки и лиса. Эталоны этих клипов хранятся в библиотеке, но ни один из них не размещается на рабочем поле. Они создаются при помощи кода по мере необходимости.
Клип, содержащий яблоко, представляет собой статическое изображение. Клип с лисой более сложный. Его первый кадр, помеченный "stand", содержит изображение неподвижной лисы. Второй кадр, "run", представляет собой начало анимации, в которой ноги лисы двигаются. В последнем кадре анимации содержится функция gotoAndPlay, возвращающая клип к кадру "run". В результате мы имеем два варианта поведения клипа с лисой: первый – клип остается в кадре 1; второй запускает анимацию всех кадров, начиная с кадра 2.
Так как и лиса, и яблоки появляются в ролике только после соответствующего запроса кода, в диалоговом окне Linkage properties содержащим их эталонам необходимо назначить свойство "Export for ActionScript". Яблоко получает идентификатор "apple", лиса – идентификатор "running fox".
Создание кода
Как и в большинстве наших игр, все события данной игры запускаются при помощи клипа «actions». В нашем примере этот клип расположен за пределами рабочего поля в верхнем левом углу экрана.
Сценарий, назначенный клипу "actions", вызывает функции главной временной шкалы ролика. Это упрощает код, так как перед именами клипов не нужно добавлять префикс _root.
После загрузки клипа код вызывает функцию initGame, а затем вызывает три функции при каждом обращении к кадру.onClipEvent (load) {
_root.initGame();
}
onClipEvent (enterFrame) {
_root.moveFox();
_root.dropNewApple();
_root.moveApples();
}Таким образом, вся работа осуществляется четырьмя функциями, которые находятся в главной временной шкале. Рассмотрим каждую из них. Первая функция, initGame, инициализирует в начале игры целый ряд переменных. Она создает и клип с лисой. Этот клип создается при помощи кода, а не добавляется при создании ролика потому, что лиса должна располагаться поверх яблок. Если бы клип лисы создавался одновременно с роликом, тогда каждое яблоко, созданное кодом, помещалось бы поверх лисы. Это позволяет нам управлять размещением уровня, в котором содержится лиса, относительно уровня с яблоками. Лисе отведен уровень 999,999. Яблоки будут помещаться начиная со слоя 1 и, следовательно, будут располагаться под лисой.
function initGame() {
// Инициализация переменных, хранящих
// номера первого и последнего яблока.
firstApple = 1;
lastApple = 0;
// Инициализация переменной, хранящей число пойманных яблок.
score = 0;
// Указываем общее количество яблок.
totalApples = 20;
// Скорость падения и счетчик времени
// между появлениями яблок.
timeSinceLastApple = 0;
appleSpeed = 5;
// Создаем экземпляр клипа, содержащий лису.
attachMovie ("running fox", "fox", 999999);
fox._x = 275;
fox._y = 300;
}Для того чтобы переместить лису, объект Key должен проверить состояние клавиатуры. С помощью функций Key.isDown(Key.RIGHT) и Key.isDown (Key.LEFT) проверяется, нажаты ли стрелки «вправо» и «влево» соответственно. Переменная dx принимает значение от 10 до -10 и показывает, насколько и в каком направлении должна переместиться лиса.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
Поймай лису
Поймай лису Исходный файл: Whackfoxfla Одна из игр в залах игровых автоматов прошлых лет называлась "Поймай крота". Игровое поле представляло собой плоскость, в отверстиях которой появлялись небольшие объекты, похожие на кротов. При помощи мягкого молотка, обычно привязанного
Глава 9 Игры типа "Поймай или пропусти"
Глава 9 Игры типа "Поймай или пропусти" • Поймай яблоко• Поймай хорошее яблоко• Сплав на байдарке• ГонкиМногие игры в сети могут быть отнесены к разряду игр «Поймай или пропусти». Они имеют следующие характерные черты: игрок управляет объектом или действующим лицом,
Поймай хорошее яблоко
Поймай хорошее яблоко Исходный файл: Applelettercatch.fla В данном примере в предыдущую игру будет добавлено "плохое яблоко". Это довольно просто сделать. Давайте усложним задачу и сделаем так, чтобы хорошие и плохие яблоки выглядели по-разному.На каждом падающем яблоке будет
WWDC 2013 — Яблоко с твиками из Сидии? Сергей Голубицкий
WWDC 2013 — Яблоко с твиками из Сидии? Сергей Голубицкий Опубликовано 11 июня 2013 Вчера вся (наша) надкусанная тусовка не дышала, не спала, не отвлекалась: яблофаны жили переживаниями открытия конференции разработчиков WWDC 2013 — события, от которого ждали
Впервые надкусывая яблоко: Непутевые заметки про iMac
Впервые надкусывая яблоко: Непутевые заметки про iMac Автор: Родион НасакинОбидно, но я не смог по достоинству оценить прелести iMac, временно поселившегося у нас в редакции, равно как и установленную на нем последнюю версию Mac OS по той простой причине, что сел за Мак первый
По зубам ли «Яблоко» Тиму Куку? Михаил Карпов
По зубам ли «Яблоко» Тиму Куку? Михаил Карпов Опубликовано 25 августа 2011 года Об отставке основателя Apple Стива Джобса наверняка будут спорить ещё долго. Оптимисты надеются, что уход Джобса не повредит Apple. Его вряд ли возможно заменить, но он собрал
Розенцвейг Гэри
Просмотр ограничен
Смотрите доступные для ознакомления главы 👉