← Все вопросы

Как не дать персонажу уехать за край экрана в pygame?

Задан 27 месяцев назад1.2к просмотров1 ответ
5

Сделал управление стрелками, всё двигается. Но герой спокойно уезжает за край окна и пропадает совсем. Как ограничить движение, чтобы он упирался в стенки экрана и не вылезал?

1 ответ

10
✓ Принятый ответ — помог автору

После того как ты поменял координаты, добавь проверки, которые «зажимают» их в пределах экрана. Учитывай размер самого героя, иначе он будет наполовину вылезать.

WIDTH, HEIGHT = 640, 480
size = 40   # размер квадрата-героя

# ... двигаем x, y ...

if x < 0:            x = 0
if x > WIDTH - size: x = WIDTH - size
if y < 0:            y = 0
if y > HEIGHT - size: y = HEIGHT - size

Идея: если координата вышла за допустимый предел — возвращаем её на границу. WIDTH - size, а не WIDTH, потому что прямоугольник рисуется от левого-верхнего угла, и его правый край — это x + size.

То же самое можно записать одной строкой через max/min: x = max(0, min(x, WIDTH - size)).

Ваш ответ

Войдите, чтобы ответить на вопрос.