function moveBunny() {
// Проверяем, пришло ли время для следующего шага кролика.
if (getTimer() > bunny.nextmove) {
// Определенное время кролик двигаться не может.
bunny.nextmove = getTimer() + 60 – gameLevel*10;
// Перемещаем кролика, bunny.
bunny._x += bunny.move.x*5;
bunny._y += bunny.move.y*5;
// Выясняем, дошел ли кролик до положения цели.
if (bunny._x == bunny.dest.x and bunny._y ==bunny.dest.y) {
// Создаем массив с координатами
// возможных положений кролика.
possibilities = new Array;
for (i=0; i
// Определяем расстояние между
// текущим положением кролика и ягодой.
xdiff = Math.abs(berries[i]._x – bunny._x);
ydiff = Math.abs(berries[i]._y – bunny._y);
// Если эта ягода находится рядом…
if ((xdiff == 25 and ydiff == 0) or (xdiff == 0
and ydiff == 25) {
//…тогда ее положение может
// быть положением цели кролика.
possibilities.push(berries[i]);
}
}
// Среди возможных положений цели выбираем произвольное.
do {
r = int(Math.random()*possibilities.length);
// Указываем новое положение цели
// и направление движения.
bunny.dest.x = possibilities[r]._x;
bunny.dest.y = possibilities[r]._y;
bunny.move.x = (possibilities[r]._x – bunny._x)/25;
bunny.move.y = (possibilities[r]._y – bunny._y)/25;
// Принимаем выбранные положения, если кролик
// не возвращается назад или если этот
// путь – единственно возможный.
} while ((bunny.dest.x = lastx and bunny.dest.y == lasty) and (possibilities.length > 1));
// Запоминаем координаты предыдущего положения.
lastx = bunny._x;
lasty = bunny._y;
}
}
// Проверяем, находится ли кролик поблизости с лисой.
if (Math.abs(bunny._x – fox._x) <= 10 and Math.abs(bunny._y –
fox._y) <= 10 {
if (lives < 1) {
gotoAndStop("game over");
} else {
lives–;
gotoAndStop("lost life");
}
}
}
К сведению
Не забудьте, что нужно присвоить имена связи клипам лисы, кролика и ягоды. Для каждого кадра, в том числе и в небольших клипах, вам понадобится функция stop().
Другие возможности
Есть множество способов усовершенствовать эту игру. У вас может быть несколько кроликов, специальные ягоды, которые на короткое время будут позволять лисе гоняться за кроликом. Через определенные промежутки времени из центральной области будет выходить новый кролик, а в коридорах лабиринта будут появляться бонусные очки.
Возможно, вам в голову придут и другие идеи, например сделать так, чтобы кролик был более сообразительным: гонялся за лисой соперничал с лисой и поедал ягоды. Можно начислять дополнительные очки в конце каждого уровня в зависимости от того, насколько быстро он был пройден.
Исходныйт файл: Moonlander.fla
Вот еше одна классическая игра. Игра "Луноход" была, возможно, второй из когда-то созданных компьютерных игр. Ее первая версия предназначалась для универсальной ЭВМ и была полностью основана на тексте. Каждую секунду компьютер в виде текста выдавал, где в данный момент находится луноход и какова его скорость. По мере снижения лунохода игрок мог вносить коррективы.
С тех пор игра воссоздавалась в различных графических форматах, большинство из которых, как и здесь, использовали вид сбоку (рис. 16.6).
Рисунок 16.6. Луноход снижается, пытаясь приземлиться на одну из приспособленных для этого площадок
Задача проекта
Цель – создать стандартную игру, в которой корабль должен удачно совершить посадку. Он начинает свое движение вверху экрана, игрок управляет сильным вертикальным ускорителем, расположенным под кораблем, а также более слабыми ускорителями – по бокам корабля.
С течением времени корабль снижается под воздействием гравитации. Игрок не может постоянно пользоваться ускорителями, так как у корабля ограниченный запас горючего.
Задача игрока состоит в том, чтобы корабль в полной сохранности совершил посадку на одну из отведенных для этого площадок. Если он сядет не на площадку или как-то иначе коснется поверхности луны, то произойдет взрыв.
В этой игре несколько уровней. В ролике, который приводится в качестве примера, их три, и в каждом отображается различный рельеф.
Подготовка ролика
Сначала рассмотрим клип «ship». На рис. 16.7 показан полноэкранный вид окна программы Flash в момент, когда выбран клип корабля. В этом клипе несколько кадров с метками: «normal», «up», «left», «right» и «explode».
Рисунок 16.7.Клип «ship» включает следующие кадры: «normal», «up», «left», «right» и «explode»
В первом кадре представлен корабль без включенных ускорителей. Во втором кадре включен главный ускоритель, который поднимает корабль вверх. В третьем и четвертом кадрах отображены боковые ускорители. На рис. 16.7 показан кадр «left». Обратите внимание, что слово «left» означает, что корабль будет двигаться влево, а пламя ускорителя находится справа.
Читать дальше
Конец ознакомительного отрывка
Купить книгу