Skip to main content

Задаємо рух гравця

Для задання швидкості руху гравця використаємо список:

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

Для наочності наведемо систему координат:

Запускаємо інсталятор