Задаємо рух гравця
Для задання швидкості руху гравця використаємо список:
player_speed = [1, 1]
Для руху гравця будем змінювати положення гравця за допомогою метода move().
player_rect = player_rect.move(player_speed)
Для замальовки «слідів» гравця будемо замальовувати головну поверхню (екран) у чорний колір:
main_display.fill((0, 0, 0))
або
COLOR_BlACK = (0, 0, 0)
main_display.fill(COLOR_BlACK)
Однак у нашій реалізації є одна істотна вада. Головний цикл працює надто швидко: кожні кілька мілісекунд перевіряють чергу подій. Це надмірно навантажує процесор комп'ютера. Події так швидко не генеруються.
Тому правильніше використовувати вбудований в pygame інструмент тіків на основі класу Clock.
FPS = pygame.time.Clock()
FPS.tick(120)
Ось цю величину (120) називають Frames Per Second (FPS).
Щоб обмежити рух гравця в межах ігрового поля, нам потрібно визначати його положення. Для цього будемо використовувати властивості класу Rect, а саме координати боків прямокутника: top (верхня), bottom (нижня), left (ліва) та right (права). Тому перевірка для нижньої межі ігрового поля буде виглядати так:
if player_rect.bottom >= HEIGHT:
pass
Зауважимо, що швидкість player_speed – це список з двох елементів: горизонтальної (по осі x) та вертикальної (по осі y) швидкостей. Тому горизонтальна швидкість – це player_speed[0], вертикальна - player_speed[1]. При зіткненні з нижньою межею ми повинні змінити лише вертикальну швидкість, тому повністю перевірка виглядатиме так:
if player_rect.bottom >= HEIGHT:
player_speed[1] = -1
Аналогічно для правої сторони:
if player_rect.right >= WIDTH:
player_speed[0] = -1
Для наочності наведемо систему координат:
