Rect: позиция, размер и координаты
pygame.Rect хранит позицию и размер вместе, а ось Y на экране растёт вниз — в отличие от Turtle и математики на бумаге.
Мы уже упоминали pygame.Rect в разделе 20.3 как способ
хранить позицию и размер вместе. Пора познакомиться с ним по-настоящему — и заодно
разобраться, как в Pygame устроена система координат.
pygame.Rect
igrok_rect = pygame.Rect(100, 200, 40, 40) # x, y, ширина, высота
print(igrok_rect.x, igrok_rect.y) # левый верхний угол
print(igrok_rect.center) # центр — кортеж (x, y)
print(igrok_rect.right, igrok_rect.bottom) # правый и нижний край
igrok_rect.x += 5 # передвинуть весь прямоугольник вправо
igrok_rect.center = (300, 300) # или сразу задать новый центр
Rect удобен именно тем, что не заставляет вручную помнить
четыре отдельные переменные (x, y,
ширина, высота) и пересчитывать
границы объекта самостоятельно — за это отвечают готовые атрибуты вроде
.right, .center,
.bottom.
Система координат: мир и экран
В Pygame точка (0, 0) — это левый верхний угол экрана, а ось Y
растёт вниз, а не вверх. Это важно держать в голове, особенно после Turtle
(главы 6–7, 12 и 19), где ось Y растёт вверх, как в математике на бумаге:
| Математика / Turtle | Pygame | |
|---|---|---|
| Начало координат (0, 0) | Центр экрана | Левый верхний угол |
| Направление роста Y | Вверх | Вниз |
| "Прыжок вверх" в коде | y увеличивается | y уменьшается |
Отсюда частая на первых порах путаница: код «прыжка» персонажа выглядит как
y -= skorost_pryzhka, а не y += —
потому что «выше на экране» означает «меньшее значение Y».