function moveBall {
(1) → // Изменяем значение переменных x и у.
x += dx;
y += dy;
(2) → // Проверяем, достиг ли мяч правой стены.
if (x+ballRadius > rightWall) {
overshoot = (x+ballRadius) – rightWall;
x -= overshoot*2;
dx *= -1;
}
(3) → // Проверяем, достиг ли мяч нижней стены.
if (y+ballRadius > bottomWall) {
overshoot = (y+ballRadius) – bottomWall;
y -= overshoot*2;
dy *= -1;
}
(4) → // Проверяем, достиг ли мяч верхней стены.
if (y-ballRadius < topWall) {
overshoot = topWall – (y-ballRadius);
y += overshoot*2;
dy *= -1;
}
(5) → // Находится ли мяч там, где должен удариться о биту?
paddleRight = paddle._x+(paddle._width/2);
if ((x-ballRaduis < paddleRight) and passedPaddle) {
(6) → // Находится ли там бита?
paddleTop = paddle._y-(paddle._height/2);
paddleBottom = paddle._y+(paddle._height/2);
if ((y > paddleTop) and (y < paddleBottom)) {
// Удар о биту.
overshoot = paddleRight – (x-ballRadius);
x += overshoot*2;
dx *= -1;
(7) → // Увеличиваем скорость.
dx *= 1.05;
dy *= 1.05;
} else {
// Мяч пропущен, больше ничего проверять не надо.
passedPaddle = true;
}
}
(8) → // Проверяем, находится ли мяч у левой стены.
if ((x-ballRadius < leftWall) and passedPaddle) {
Mouse.show;
GotoAndPLay("game over");
}
// Устанавливаем новое положение мяча.
ball._x = x;
ball._y = y;
}По сравнению с функцией moveBall функция movePaddle поразительно короткая. Все, что необходимо сделать, – присвоить вертикальному положению биты значение вертикальной координаты курсора.
function movePaddle {
// положение биты меняется в соответствии с курсором
paddle._y = _ymouse;
}
К сведению
Убедитесь, что экземпляру клипа с мячом присвоено имя «ball», а экземпляру клипа с битой – «paddle». Если стены расположены не так, как в исходном ролике, проверьте, правильно ли указаны константы в функции initGame.
В основной кадр игры необходимо включить оператор stop, чтобы вставить паузу в основную временную шкалу (это поможет избежать досрочного перехода к кадру окончания игры).
Другие возможности
Игру можно усовершенствовавать, если позволить игроку пропустить в течение игры определенное количество мячей. Таким образом, игра не будет заканчиваться после пропуска первого мяча, а продолжится со вторым мячом и т. д.
Осуществить это можно, присвоив, например, в начале игры переменной ballNum значение 3 или какое-либо другое. В результате, если величина ballNum будет превышать 0, вместо кадра «game over» ролик будет переходить к кадру «ball lost». Игрок может нажать любую клавишу и начать игру заново, но при этом значение ballNum будет уменьшено на единицу.Мяч и бита
Исходный файл: Paddleball.fla
Хотя предыдущая игра веселая, у нее есть один недостаток: нет никакой возможности выиграть. Вы просто играете до тех пор, пока не надоест или пока не проиграете.
Игра станет более интересной, если позволить игроку управлять одной битой в то время, как компьютер будет управлять другой. Игрок попытается не пропустить мяч, надеясь на то, что его пропустит компьютер.
На рис. 11.3 показан кадр из игры. Игрок управляет левой битой, а компьютер – правой.