Читаем Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript полностью

Обе эти функции расположены в основной временной шкале первого кадра. Сценарий ролика начинается с функции startGame, которая вызывается, когда в первом кадре игрок щелкает по кнопке Play. Она устанавливает значение переменной gameLevel, отображаемое в текстовом поле в верхнем правом углу экрана. Затем с помощью функции startLevel начинается первый уровень.

function startGame() {

gameLevel = 1;

startLevel();

}

Функция startLevel выполняет множество задач. Сначала она переводит ролик к кадру в соответствии со значением переменной gameLevel, затем помещает корабль вверху экрана. Скорость корабля, которая определяется величинами dx и dy, обнуляется. Для увеличения скорости корабля и для того, чтобы он начал двигаться вниз, используется переменная gravity.

В массивах hitPoints и footPoints содержатся координаты некоторых точек относительно центра корабля. Для определения, коснулся ли корабль поверхности луны, используются элементы массива hitPoints. А оба элемента массива footPoints нужны, чтобы определить, находятся ли обе опоры лунохода на посадочной площадке.

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

function startLevel() {

gotoAndStop("level"+gameLevel);

// Размещаем клип корабля.

ship._x = 275;

ship._x = 25;

// Корабль не движется.

ship.dx = 0;

ship.dy = 0;

// Инициализируем гравитацию.

gravity = .1;

// Инициализируем индикатор горючего.

fuel = 100;

showFuel();

// Определяем точки корабля, которые могут коснуться поверхности Луны.

hitPoints = new Array();

hitPoints.push({x:-9, y:13});

hitPoints.push({x:9, y:13});

hitPoints.push({x:0, y:-10});

hitPoints.push({x:-9, y:-7});

hitPoints.push({x:8, y:-7});

// Определяем координаты опор лунохода.

footPoints = new Array();

footPoints.push({x:-9, y:13});

footPoints.push({x:9, y:13});

// Создаем массив из клипов "pad" (посадочная площадка).

pads = new Array();

for (i=0; i<3; i++) {

pads.push(_root["pad"+i]);

}

}

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

function moveShip() {

shipThrusters();

shipMovement();

checkForLand();

checkForCrash();

}

Функция shipThrusters проверяет, осталось ли еще горючее, если нет, то клип «ship» переходит к кадру «normal». В противном случае, если игрок нажимает на одну из клавиш со стрелками «вверх», «влево» или «вправо», включается соответствующий ускоритель. Клип «ship» переходит к соответствующему кадру, и чтобы отразить эффект действия ускорителя, изменяются значения dx и dy. Также уменьшается количество топлива.

function shipThrusters() {

// Проверяем ускорители и корректируем скорость.

if (fuel < 0) {

ship.gotoAndStop("normal");

} else if (Key.isDown(Key.UP)) {

ship.dy -= .4;

ship.gotoAndStop("up");

fuel -= 2;

showFuel();

} else if (Key.isDown(Key.LEFT)) {

ship.dx -= .2;

ship.gotoAndStop("left");

fuel -= 1;

showFuel();

} else if (Key.isDown(Key.RIGHT)) {

ship.dy += .2;

ship.gotoAndStop("right");

fuel -= 1;

showFuel();

} else {

// Не включен ни один из ускорителей.

ship.gotoAndStop("normal");

}

}

Функция shipMovement изменяет скорость корабля согласно гравитации и перемещает корабль в зависимости от скорости лунохода.

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных

Все жанры