Второй игрой на GMS2 стал пинг-понг. Тоже классика, как и крестики-нолики. За счёт инерции мяча и бит, а также алгоритма поведения компьютера – играть в него очень увлекательно.
Вы управляете левой битой при помощи курсорных клавиш клавиатуры Вверх ↑ и Вниз ↓. Задача – отбивать все подачи и не пропускать мячи, при этом стараться сделать такую подачу, чтобы компьютер пропустил мяч.
В данной игре я не использовал разбиение кода на скрипты. Вся логика помещена в событиях объектов: obj_player, obj_ai, obj_ball и obj_game. Для примера ниже пара обработчиков.
/// @description Движение
// Если мяч движется налево, т.е. от AI игрока
if (obj_ball.direction>90&&obj_ball.direction<270) {
// Тормозимся
if (vspd>0) {
vspd=max(0, vspd-acceleration);
} elseif (vspd<0) {
vspd=min(0, vspd+acceleration);
}
} else {
// Иначе, если мяч движется к AI игроку,
// движемся за ним по вертикали, меняя вертикальную скорость
if (y<obj_ball.y) {
vspd=min(maxspd, vspd+acceleration);
} else {
vspd=max(-maxspd, vspd-acceleration);
}
}
// Увеличиваем вертикальную позицию
// на значение вертикальной скорости
y+=vspd;
/// @description Инициализация
// Задаём рандомайзер
randomize();
// Выбираем направление первоначального броска
if (irandom(1)) {
// Налево верхняя и нижняя часть
direction=random_range(135, 225);
} else {
// Направо
if (irandom(1)) {
// Направо верхняя часть
direction=random_range(0, 45);
} else {
// Направо нижняя часть
direction=random_range(315, 359);
}
}
// Начальная скорость
speed=1;