Иллюстрированный самоучитель по Flash-games


Создание кода - часть 3


Рисунок 9.8 Область возможного столкновения показана прямоугольником. Поскольку контроль пересечения с камнем ведется по центру клипа "rocks", то реальная область столкновения выглядит несколько меньше

Количество столкновений сохраняется в переменной spills. После шести столкновений игра переходит к кадру с меткой "lose", и игра считается завершенной. При этом происходит вызов функции removeAll, которая будет рассмотрена далее.

function moveRocks() {

// Проверяем все камни.

for (i=firstRock;i

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

x = _root["rock"+i]._x; y = _root["rock"+i]._y - riverSpeed;

// Выясняем, вышел ли камень из поля зрения.

if (y < -50) {

removeRock(i);

// Проверяем, что с камнем не было столкновений.

} else if ((_root["rock"+i].hit == false) and (Math.abs(y-fox._y) < 60) and (Math.abs(x-fox._x) < 25)) {

spills += 1;

// Столкновение.

_root["rock"+i].hit = true;

// Переворачиваем байдарку.

fox.gotoAndPlay("spill");

// Останавливаем байдарку.

riverSpeed = 0;

// Игра закончена?

if (spills > 5) {

removeAll();

gotoAndPlay("lose");

}

}

// Продолжаем перемещать камень.

_root["rock"+i]._y = y;

}

}

Как и функция removeApple, функция removeRock предназначена для проверки того, является ли данный камень последним. В этом случае игра переходит к кадру с меткой "win".

function removeRock(n) {

// Убираем со сцены клип камня.

_root["rock"+n].removeMovieClip();

// Увеличиваем счетчик для первого камня.
firstRock = n+1;

// Проверяем, был ли этот камень последним,

if (n == totalRocks) {

removeAll();

gotoAndPlay("win");

}

}

В предыдущем фрагменте кода указаны два случая завершения игры. В обоих случаях вызывается функция removeAll, которая убирает с экрана все оставшиеся скалы и клип лисы. Иначе эти элементы останутся на экране даже после завершения игры.

function removeAll() {

// Убираем со сцены все объекты

for (i=firstRock;i

_root["rock"+i].removeMovieClip();

}

fox.removeMovieClip();

}




Начало  Назад  Вперед



Книжный магазин