// Увеличиваем скорость мяча.
dx *= 1.05;
dy *= 1.05;
} else {
// Мяч пропущен, больше ничего не проверяем.
passedPaddle = true;
}
}
(10) →// Находится ли мяч там,
// где должен столкнуться с битой компьютера?
paddleLeft = computerPaddle._x-(computerPaddle._width/2);
if ((x+ballRadius > paddleLeft) and !passedPaddle) {
// Находится ли там бита?
paddleTop = computerPaddle._y-(computerPaddle._height/2);
paddleBottom = computerPaddle_>y+
(computeerPaddle._height/2);
if ((y > paddleTop) and (y < paddleBottom)) {
// Удар битой.
oveershoot = (x+ballRadius) – paddleLeft;
x -= overshoot*2;
dx *= -1;
// Увеличиваем скорость мяча.
dx *= 1.05;
dy *= 1.05;
} else {
// Мяч пропущен, ничего больше не проверяем.
passedPaddle = true;
}
}
(11) →// Проверяем, попал ли мяч в левую стену.
if ((x-ballRadius < leftWall) and passedPaddle) {
Mouse.show();
computerScore++;
if (numBalls == 0) {
gotoAndPlay("game over");
} else {
numBalls–;
gotoAndPlay("start level");
}
}
(12) →// Выполняем аналогичную проверку для правой стены.
if ((x+ballRadius > rightWall) and passedPaddle) {
Mouse.show();
playerScore++;
if (numBalls == 0) {
gotoAndPlay("game over");
} else {
numBalls—;
gotoAndPlay("start level");
}
}
// Устанавливаем новое положение мяча.
ball._x = x;
ball._y = y;
}
Функция movePaddleидентична одноименной функции предыдущей игры. Однако необходимо добавить функцию moveComputerPaddle,управляющую правой битой, которая будет перемещать биту только в том случае, если мяч летит вправо. Бита будет перемещаться вверх, если мяч расположен выше нее, и вниз, если ниже. Скорость передвижения биты устанавливается в начале функции. Чем выше это значение, тем быстрее бита будет реагировать на перемещения мяча.
function moveComputerPaddle() {
// Устанавливаем скорость биты, управляемой компьютером.
moveAmount = 8;
// Выясняем, движется ли мяч в этом направлении.
if (dx > 0) {
// Перемещаем биту вверх.
if (y < computerPaddle._y-moveAmount) {
computerPaddle._y -= moveAmount;
// Перемещаем биту вниз.
} esle if (y > computerPaddle._y+moveAmount) {
computerPaddle._y += moveAmount;
}
}
}
Еще один важный фрагмент кода входит в кадр «start game» и устанавливает исходные значения количества мячей и очков. Эти переменные не могут быть вставлены в функцию startLevel,так как они должны быть установлены только в начале игры, а не перед тем, как подается мяч.
numBalls = 7;
computerScore = 0;
playerScore = 0;
stop();
К сведению
В дополнение к уже описанным элементам необходимо создать текстовые поля playerScoreи computerScoreи поместить их на рабочее поле. Они должны быть расположены во всех кадрах, кроме «start game», таким образом, чтобы были видны между подачами мяча и в конце игры.
Другие возможности
Изменить количество мячей просто: достаточно изменить только одно значение в кадре «start game». Изменяя другие параметры, можно продлить или усложнить игру. Есть и другие варианты усовершенствования игры – например, увеличить скорость биты компьютера, поменяв одно значение в функции moveComputerPaddle.
Также можно сделать компьютер "умнее". Например, написать код, который будет предугадывать место, куда прилетит мяч, и передвигать туда биту вместо того, чтобы просто перемещать ее вслед за мячом. При пересечении границ игрового поля мяч будет ударяться о верхнюю или нижнюю стенку только один раз, так что определить предполагаемое место можно с помощью простых математических расчетов, если вы хорошо владеете математикой.
Исходный файл: Paddlebricks.fla
Следующая игра намного сложнее двух предыдущих, хотя в ней используются те же основные элементы: мяч, бита и стены. Это классическая игра изначально называлась "Breakout" [14] .
На рис. 11.4 показан фрагмент игры. В дополнение к мячу и бите вверху экрана расположены пять рядов блоков. Цель игры – выбить блоки с помощью мяча. Когда будут выбиты все блоки, игра переходит на следующий уровень, где мяч летит с большей скоростью.
Рисунок 11.4. В игре «Бита и блоки» представлены ряды блоков, которые игрок должен выбить с помошью мяча
Задача проекта
Цель состоит в том, чтобы создать классическую игру игровых автоматов с битой и блоками. С помощью мыши можно перемещать биту по горизонтали. Мяч отскакивает от верхней и боковых стен и считается пропущенным, если пролетает мимо биты, сквозь нижнюю стену.
Когда мяч ударяется о блок, он отскакивает, а блок исчезает. После того как будут выбиты все блоки, игра переходит на другой уровень, где на экране окажутся те же блоки, но мяч будет двигаться быстрее. Просмотрите ролик Paddlebricks.fla, имеющийся на Web-сайте, чтобы увидеть, как работает игра.
Другое отличие этой игры от предыдущих состоит в том, что направление движения мяча зависит от того, в каком месте мяч ударится о биту. Если он попадает в левую часть биты, то отлетает влево, если же в правую, то вправо. Угол определяется тем, насколько далеко от центра биты ударился мяч.
Читать дальше
Конец ознакомительного отрывка
Купить книгу