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


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


// Перемещаем астероид по вертикали и, если нужно,

// на противоположную сторону экрана.

rocks[i]._y += rocks[i].dy;

if (rocks[i]._y > 400) rocks[i]._y -= 400;

if (rocks[i] ._y < 0) rocks [i].__y += 400;

// Вращаем астероид.

rocks[i]._rotation += rocks[i].spin;
}}

Для простоты код, определяющий столкновения, был помешен в одну функцию, которая просматривает все астероиды и пули и с помощью команды hitTest проверяет, попала ли пуля в один из астероидов.
Когда пуля попадает в астероид, его размер и положения записываются, а сам астероид удаляется. Если размер астероида превышал 25%, в этой же точке создается два новых астероида, каждый из которых в два раза меньше своего предшественника. Направление движения и вращения каждого астероида выбирается случайным образом.
Функция checkHits также проверяет, не столкнулся ли какой-либо астероид с кораблем, если да, то уменьшается количество жизней, и ролик переходит к кадру "ship hit". Если не осталось ни одной жизни, то -к кадру "game over".
И в конце функция checkHits проверяет, остались ли элементы в массиве rocks. Если нет, значит, игрок разрушил все астероиды, и ролик переходит к кадру "level over".

function checkHits() {

// Просматриваем все астероиды,

for (j=rooks.length-1; i>=0; i--) {

// Просматриваем все пули.

for (j=bullets.length-1; j>=0; j--) {

// Выясняем, попала ли пуля в астероид.

if (rocks[i].hitTest(bullets[j]._x,bullets[j]._y,true)) {

// Удаляем пулю.

bullets[j].removeMovieClip();

bullets.splice(j);

// Опредляем размер и положение новых астероидов.

newsize = rocks[i]._xscale / 2 ;

x = rocks[i]._x;

у = rocks[j]._y;

// Удаляем астероид.

rocks[i].removeMovieClip();

rocks.splice(i,1);

// Создаем на этом месте два новых астероида,

if (newsize >= 25) {

newRock(mewsize,x,y);

newRock(mewsize,x,y);}

// Увеличиваем количество очков. score++;

// Больше не нужно проверять, попала ли пуля

//в какой-нибудь астероид.

break;}}

// Определяем, столкнулся ли корабль с астероидом,




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