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

Бита и блоки

Подготовка ролика

Для этого ролика нужно пять кадров, то есть больше, чем в ранее рассмотренных играх. Первый кадр – "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;
}
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.