Бита и блоки
Подготовка ролика
Для этого ролика нужно пять кадров, то есть больше, чем в ранее рассмотренных играх. Первый кадр – "start game". Он появляется только в начале игры. Щелчок по кнопке Play переводит игрока непосредственно в кадр "play", и игра начинается.
Второй кадр – это "start level". Он отображается, когда игрок переходит на второй и последующие уровни. Здесь щелчок по кнопке Play также переносит игрока в кадр "play", то есть к началу нового уровня.
Третий кадр – "start ball". Он отображается, когда игрок пропускает мяч и хочет подать себе следующий. Внимательно рассмотрите исходный файл. Как видите, блоки присутствуют в третьем и четвертом кадрах, то есть в кадре "play". Таким образом, изображения блоков сохраняются, пока ролик переходит от кадра "play" к кадру "start ball". Иначе блоки будут расположены на своих исходных позициях.
Последний кадр – "game over". Щелчок по кнопке Play перенесет игрока обратно к кадру "start game", где значения некоторых важных параметров будут восстановлены.
Кроме организации расположения кадров необходимо создать блоки для третьего и четвертого кадров. В исходном ролике блоки имеют ширину 48 пикселов и высоту 8 пикселов. В примере расстояние между ними составляет 50x10 пикселов, таким образом, получается 5 рядов блоков по 11 блоков в каждом, что в общей сложности составляет 55 блоков.
Для того чтобы не именовать 55 блоков на рабочем поле, подумайте, а не начать ли игру вовсе без блоков, а затем воспользоваться оператором attachMovie, чтобы добавить каждый блок с помощью кода. Хотя данная техника здесь не применяется, можно посмотреть, как она реализована в следующей игре этой главы.
К сожалению, каждому блоку должно быть присвоено имя, чтобы код мог его распознать. В исходном файле им назначены имена от al до а55. Клип с мячом называется "ball", а с битой – "paddle".
Создание кода
Прежде чем будет запущен кадр игры, в кадре "start game" необходимо определить две важные переменные: начальную скорость движения мяча по вертикали и количество мячей, которые могут быть поданы.
dy
=
3
;
numBalls
=
3
;
stop();
Когда происходит переход к кадру "play", с помощью клипа "actions" можно регулярно вызывать функции. В данной игре все столкновения с мячом или стенами должны быть учтены в функции moveBall, но для блоков была создана отдельная функция – checkCollisions.
onClipEvent(load) {
_root.startBall();
onClipEvent(enterFrame) {
_root.moveBall();
_root.movePaddle();
_root.checkCollisions();
}
}
Когда начинается кадр "play", подается мяч. Положение мяча определяется тем, где он появляется на рабочем поле. Скорость мяча по горизонтали всегда равна 3, направление движения – вправо. Скорость по вертикали указывается в первом кадре, где величине dy было присвоено значение 3. Однако это значение изменится перед следующим уровнем.
Вдобавок к параметрам мяча воспользуйтесь возможностью и установите некоторые значения, которые не будут изменяться во время игры.
function
startBall() {
// Определяем начальное положение мяча,
x
=
ball._x;
y
=
ball._y;
// Устанавливаем начальную скорость по горизонтали,
dx
=
3
;
// Прячем курсор.
Mouse.hide();
// Задаем значения констант.
rightWall
=
550
;
leftWall
=
0
;
topWall
=
0
;
bottomWall
=
400
;
ballRadius
=
ball, _width
/
2
;
paddleTop
=
paddle._y
-
paddle._height
/
2
;
paddleBottom
=
paddle._y
+
paddle.__height
/
2
;
}
Следующая функция управляет битой, выравнивая ее по горизонтали в соответствии с движением мыши.
// Бита следует за курсором,
function
movePaddle() {
paddle._x
=
_xmouse;
}