Луноход
Исходныйт файл: Moonlander.fla
Вот еше одна классическая игра. Игра "Луноход" была, возможно, второй из когда-то созданных компьютерных игр. Ее первая версия предназначалась для универсальной ЭВМ и была полностью основана на тексте. Каждую секунду компьютер в виде текста выдавал, где в данный момент находится луноход и какова его скорость. По мере снижения лунохода игрок мог вносить коррективы.
С тех пор игра воссоздавалась в различных графических форматах, большинство из которых, как и здесь, использовали вид сбоку (рис. 16.6).
Рисунок 16.6 .
Задача проекта
Цель – создать стандартную игру, в которой корабль должен удачно совершить посадку. Он начинает свое движение вверху экрана, игрок управляет сильным вертикальным ускорителем, расположенным под кораблем, а также более слабыми ускорителями – по бокам корабля.
С течением времени корабль снижается под воздействием гравитации. Игрок не может постоянно пользоваться ускорителями, так как у корабля ограниченный запас горючего.
Задача игрока состоит в том, чтобы корабль в полной сохранности совершил посадку на одну из отведенных для этого площадок. Если он сядет не на площадку или как-то иначе коснется поверхности луны, то произойдет взрыв.
В этой игре несколько уровней. В ролике, который приводится в качестве примера, их три, и в каждом отображается различный рельеф.
Подготовка ролика
Сначала рассмотрим клип «ship». На рис. 16.7 показан полноэкранный вид окна программы Flash в момент, когда выбран клип корабля. В этом клипе несколько кадров с метками: «normal», «up», «left», «right» и «explode».
Рисунок 16.7. Клип
В первом кадре представлен корабль без включенных ускорителей. Во втором кадре включен главный ускоритель, который поднимает корабль вверх. В третьем и четвертом кадрах отображены боковые ускорители. На рис. 16.7 показан кадр «left». Обратите внимание, что слово «left» означает, что корабль будет двигаться влево, а пламя ускорителя находится справа.
Кадр "explode" представляет собой начало небольшой анимации, в которой луноход взрывается. Эта анимация используется в том случае, когда игрок посадил корабль не на площадку.
В дополнение к клипу "background", который совсем не используется в коде, три других клипа представляют собой рельеф поверхности для трех уровней игры. Эти клипы называются "Ground – level 1", "Ground – level 2" и "Ground – level 3".
Клип "pad" – всего лишь желтый прямоугольник, который показывает, что непосредственно под луноходом находится посадочная площадка.
Основная временная шкала этого ролика действительно сложная. Информация о кадрах и их содержимом приведена в табл. 16.1.
Таблица 16.1.У вас также будет два простых клипа: «fuel gauge» и «fuel meter». Первый представляет собой пустой прямоугольник, а второй – сплошной. Клип «meter» помещается внутри клипа «gauge». Далее в коде вы укажете, чтобы при сжигании горючего размеры клипа «meter» уменьшались, то есть он будет занимать меньше места в прямоугольнике «gauge».
Создание кода
В трех кадрах «level1», «level2» и «level3» у вас будут клипы «actions», которые вызывают необходимые для игры функции. В начале уровня вызывается только одна функция, а в течение игры постоянно – другая.onClipEvent(load) {
_root.startLevel;
}
onClipEvent(enterFrame) {
_root.moveShip;
}