attachMovie("balloon", "balloon"+balloonNum, balloonNum);
balloonClip = this["balloon"+balloonNum];
balloonClip._x = x*30+20;
balloonClip._y = y*30+20;
// Добавляем в массив.
balloons.push(balloonClip);
// Устанавливаем цвет.
balloonColor = new Color(balloonClip);
if (y == 0) {
balloonColor.setTransform({rb: 255});
} else if (y == 1) {
balloonColor.setTransform({gb: 255});
} else if (y == 2) {
balloonColor.setTransform({bb: 255});
}
balloonNum++;
}
}
// Направление (скорость)шариков.
balloonDirection = 3;
}
Функция moveBalloons двигает все шарики в массиве balloons.Если какой-нибудь из них дотронется до края экрана, то все они меняют направление. Если же какой-нибудь достигнет низа экрана, игра заканчивается.
function moveBalloons() {
// Переменная-флаг изменения направления.
var newDirection = false;
// Просматриваем все шарики.
for(var i=0;i
// Передвигаем текущий шарик.
balloons[i]._x += balloonDirection;
// Смотрим, не достиг ли шарик границы экрана.
if ((balloonDirection > 0) and (balloons[i]._x > 530)) {
newDirection = true;
} else if ((balloonDirection < 0) and (balloons[i]._x < 20)) {
newDirection = true;
}
}
// При столкновении с границой экрана
// шарики опускаются и меняют направление.
if (newDirection) {
balloonDirection *= -1;
for(var i=0;i
balloons[i]._y += 3;
}
}
// Не достигли ли шарики земли?
if (balloons[i-1]._y > 300) {
gotoAndStop("game over");
}
}
Все функции для создания лисы и пуль точно такие же, как и в первой игре главы, поэтому их код я здесь приводить не буду. Но функция checkCollision другая, поскольку она должна следить, не случилось ли так, что все шарики уничтожены, и заканчивать игру.
function checkCollision(bullet) {
// Просматриваем все шарики.
for(j=balloons.length-1;j>=0;j—) {
balloon = balloons[j];
// Смотрим не попала ли пуля в шарик.
if (distance(bullet,balloon) < 10) {
// Удаляем шар из массива.
balloons.splice(j,1);
// Переходим в кадр взрыва шарика.
balloon.gotoAndPlay(2);
// Увеличиваем счет.
score += 1;
// Если шаров больше нет – игра заканчивается.
if (balloons.length == 0) {
gotoAndStop("game over");
}
// Возвращаем значение true, так как попали в шарик.
return(true);
}
}
// Возвращаем false, поскольку попали в шарик.
return(false);
}
К сведению
Как и в исходной игре этой главы, здесь есть вводный и заключительный кадры. Я в обоих играх использую одинаковые кадры вне зависимости от того, выиграл игрок или проиграл. Вы можете сделать два разных кадра с соответствующим текстом в каждом.
Другие возможности
Чтобы сделать игру труднее, вы можете ускорить движение захватчиков. Сначала попробуйте увеличить расстояние, на которое они падают каждый раз. Также можно увеличить скорость, с которой они движутся из стороны в сторону.
Если вы хотите добавить в игру уровней, то можете создать переменную
startSpeed,которая начинается со значения 3. Задайте эту скорость функции balloonDirection каждого шарика вместо жестко заданного "3". Пусть теперь после того, как все шарики выбиты, игрок переходит к экрану «level over». Когда он нажимает кнопку «play next level»,
startSpeedувеличивается, и ролик отправляется к кадру «play», где шарики появляются с новой, более высокой скоростью.
Глава 11 Игры с мячом и битой
• Стена и мяч
• Мяч и бита
• Бита и блоки
• Бита и блоки в трех измерениях
Следующий жанр, который будет рассмотрен, восходит к первой видеоигре «Pong». Эта простая игра положила начало революции игровых автоматов в 70-х годах.
В таких играх задействован обычный мяч, отскакивающий от стен, и бита, управляемая пользователем. Игрок пытается не позволить мячу пролететь мимо биты.
В первой игре, которую вы создадите, будет только простая бита и мяч. Во второй игре появится вторая бита, управляемая компьютером, то есть у игрока будет противник, обладающий искусственным интеллектом. В третьей игре, которая описывается в данной главе, игрок будет пытаться выбить блоки с помощью мяча, как в классической игре "Breakout". Последняя игра раздела перенесет действие "Breakout" в трехмерное пространство.
Исходный файл: Wallball.fla
Первая игра называется "Стена и мяч". В ней имеются бита, управляемая пользователем, и три стены, от которых может отскакивать мяч. Четвертой стены нет (она открыта). Задача игрока состоит в том, чтобы не позволить мячу пролететь мимо биты (рис. 11.1).
Рисунок 11.1. Элементами игры «Стена и мяч» являются мяч, бита и три стены
Задача проекта
Цель данного проекта – создать игру, где двигающийся мяч будет отскакивать от стен и биты. Бита будет перемещаться по вертикали в соответствии с движением мыши. Если мяч пролетает мимо биты и достигает границы экрана, игра заканчивается. При столкновении мяча с битой скорость первого должна немного увеличиваться.
Читать дальше
Конец ознакомительного отрывка
Купить книгу