Для формирования пуль используется клип "bullet". Код игры содержится в клипе "actions" и сценарии кнопки "button". Единственная кнопка на экране, реально выполняюшая функцию кнопки, – это кнопка Play.
В ролике будут находиться кадры "start", "play", "ship hit", "level over" и "game over", в каждом из которых создается соответствуюший текст. В каждом кадре, кроме "play", находится копия кнопки Play, но к каждому экземпляру этой кнопки прикреплен разный код. Просмотрите ролик Spacerocks.fla, чтобы понять, где расположены все эти элементы и какой код прикреплен к каждому из них.
Создание кода
Как и в игре «Космический бой», за пределами рабочего поля находятся клип «actions» и кнопка «button», к которым добавлены соответствуюшие сценарии. В клипе «actions» содержится одна функция, начинаюшая уровень, и несколько функций, которые при каждом обрашении к кадру перемешают элементы на экране.
onClipEvent(load) {
// Устанавливаем все элементы игры.
_root.startLevel;
}
onClipEvent(enterFrame) {
// Перемещаем корабль на один шаг.
_root.shipMove;
// Перемещаем все пули на один шаг.
_root.bulletsMove;
// Перемещаем астероиды на один шаг.
_root.rocksMove;
// Выясняем, произошло ли столкновение.
_root.checkHits;
}К кнопке «button» прикреплен код, содержаший несколько обработчиков событий on, которые реагируют на нажатие различных клавиш и совершают соответствуюшие действия.
on (keyPress « // Выстрел. shipFire; } on (keyPress " // Поворот на 30° вправо. shipTirn(30); } on (keyPress " // Поворот на 30° влево. shipTirn(30); } on (keyPress " // Перемещаем корабль вперед. shipThrust; } on (keyPress " // Корабль останавливается. shipBreak;
Когда игрок шелкает по кнопке Play, чтобы начать игру, в кадре «start» можно установить несколько переменных: обнулить количество набранных очков, начать первый уровень игры и указать, что игрок имеет три жизни.
on (press) {
gameLevel = 1;
lives = 3;
score = 0;
gotoAndPlay("play");
}Все функции находятся в сценарии кадра «play» основной временной шкалы. Первая функция вызывается в начале игры, а также сразу после того, как у игрока уменьшилось количество жизней.
Экземпляру клипа "ship" на рабочем поле присвоено имя "ship". В дополнение к стандартным свойствам клипа, таким как _x и _y, вы добавите несколько новых. Например, свойства dx и dy будут отражать расстояние, на которое перемешается корабль по горизонтали и вертикали соответственно.
Функция startLevel создает массивы bullets и rocks, в которых хранится список клипов пуль и астероидов.
Переменная level, используемая командой attachMovie, определяет уровень клипа, а не уровень игры, для этого применяется переменная gameLevel.
Далее для начала уровня создаются большие астероиды. На первом уровне – два астероида, на втором – три и т. д.
Потом в функции shipFire используется переменная timeOfLastFire, чтобы игрок не мог слишком часто стрелять.