function initGame {
// Устанавливаем начальное положение мяча.
x = ball._x;
y = ball._y;
// Указываем начальную скорость.
dx = 5;
dy = 5;
// Устанавливаем значения постоянных.
rightWall = 550;
leftWall = 0;
topWall = 0;
bottomWall = 440;
ballRadius = ball._width/2
passedPaddle = false;
// Прячем курсор.
Mouse.hide;
}Функция movePaddle – «рабочая лошадка» этой игры. Сначала она изменяет значение x и y на величину значений dx и dy соответственно, чтобы получить новое положение мяча (1) . Затем проверяет, пролетел ли мяч сквозь стену или нет (2) .
К радиусу мяча прибавляется значение его положения, чтобы получить точную позицию правого края мяча. Если мяч оказался за стеной, функция movePaddle подсчитывает, как далеко он перелетел, и присваивает это значение переменной overshoot. Затем мяч перемещается назад на расстояние, в два раза превышающее значение overshoot. Направление мяча меняется при умножении dx на -1, таким образом, знак dx меняется на противоположный. Если значение dx до столкновения мяча со стеной было равно 5, то после этого события становится равным -5.
Затем код проверяет, пролетел ли мяч сквозь нижнюю стену или нет (3) . Этот фрагмент похож на предыдущий, только вместо x и dx используются величины y и dy.
Фрагмент кода, где проверяется, пролетел ли мяч через верхнюю стену, несколько отличается от уже рассмотренных (4) . Для определения положения верхней границы мяча из положения его центра вычитается радиус. Затем величина overshoot рассчитывается как разница между положениями стены и верхней границы мяча.
Для того чтобы определить, ударился ли мяч о биту или нет, сначала код рассчитывает положение правой границы биты (5). Потом, если мяч находится достаточно близко к бите, рассчитываются верхняя и нижняя границы, а затем определяется, пересекаются ли мяч и бита (6) .
Если мяч сталкивается с битой, то он ведет себя так же, как и при столкновении со стеной. Однако при этом скорость мяча увеличивается на 5 % (7) . Если мяч перелетает через стену, совершается только одно действие – переменной passedPaddle присваивается значение true.
Если значение переменной passedPaddle равно true, и мяч находится там, где должна быть левая стена, игра заканчивается (8) . Курсор возвращается в исходное положение, и ролик переходит к кадру «game over».
В конце функции moveBall положение мяча устанавливается в соответствии со значениями x и y.Примечание
Оператор *= работает точно так же, как и += , только он умножает исходное значение переменной на указанное число. То есть если значение a равно 5, строка a *= 3 изменит это значение на 15. Если же записать a *= -1, значение переменной a станет равным -5. Воспользовавшись записью *= – 1 можно быстро изменить знак переменной.