Python Pygame: Прыжки и границы игрока

Добавим в игру механику прыжков и ограничим перемещение игрока в пределах игрового окна.

Система координат и границы

Система координат Pygame начинается в левом верхнем углу экрана (0, 0). Для игрового объекта локальные координаты также начинаются в левом верхнем углу его прямоугольника. Это необходимо для корректной проверки положения игрока относительно границ.

Границы игрового поля

Ограничим горизонтальное движение игрока:

  • Левая граница: Если координата X игрока (x) < 5, игрок не должен двигаться влево. Добавим условие and x > 5 в код движения влево.
  • Правая граница: Если координата X игрока (x) ≥ 500 (ширина окна), игрок не должен двигаться вправо. Добавим условие and x < 500 — ширина_игрока — 5 в код движения вправо. Вычитаем ширину игрока и добавляем 5-пиксельный отступ.

После изменений игрок будет корректно останавливаться у границ.

Ограничим вертикальное движение:

  • Верхняя граница: Если координата Y игрока (y) < 5, игрок не должен двигаться вверх. Добавим условие and y > 5 в код движения вверх.
  • Нижняя граница: Если координата Y игрока (y) ≥ 500 (высота окна), игрок не должен двигаться вниз. Добавим условие and y < 500 — высота_игрока — 5 в код движения вниз. Вычитаем высоту игрока и добавляем 5-пиксельный отступ. Для начальной позиции игрока, чтобы он не появлялся за нижней границей, рекомендуется задать координату Y, например, y = 425.

Реализация прыжков

Добавим переменные:

  • jump: Булево значение, указывающее на прыжок игрока.
  • jump_count: Целочисленная переменная, управляющая высотой и скоростью прыжка. Начальное значение — 10.

Обработаем нажатие клавиши пробел (space). При нажатии jump станет True. Увеличим скорость игры, изменив задержку с 100 на 50 мс.

Добавим проверку: если jump — False, игрок может двигаться влево/вправо и прыгать. Иначе, происходит прыжок.

Прыжок реализуем с помощью параболы. jump_count возводится в квадрат и уменьшается на единицу с каждой итерацией, моделируя замедление подъема. Затем jump_count умножается на 0.5 (для регулировки высоты прыжка) и вычитается из координаты Y (y -= jump_count * jump_count * 0.5).

Когда jump_count становится меньше 0, игрок начинает падать (y += jump_count * jump_count * 0.5). Когда jump_count достигает -10, прыжок завершается, и jump устанавливается в False.

Реализована механика прыжков и добавлены границы игрового поля, что делает игру более завершенной. Игрок может свободно перемещаться в пределах экрана и совершать прыжки.

Что будем искать? Например,программа