Skip to main content

Створення гравця

За допомогою pygame.Surface класу можна створювати додаткові поверхні. Після цього малювати їх на основній або одну на одній.

У pygame поверхні створюються як викликом функції display.set_mode() або безпосередньо викликом конструктора класу Surface. Також у результаті виконання низки інших функцій та методів. Це пов'язано з тим, що поверхні відіграють важливу роль, оскільки зрештою саме вони відображаються на екрані. Крім того, вони дозволяють групувати об'єкти. Їх можна порівняти із шарами в анімації.

При створенні екземпляра Surface безпосередньо від класу необхідно вказати ширину та висоту, подібно до того, як це відбувається при виклику set_mode().

player_size = (20, 20)

player = pygame.Surface(player_size)

Колір поверхні можна змінити методом fill(колір).

player.fill((255, 255, 255))

або

COLOR_WHITE = (255, 255, 255)  # Білий колір*

player.fill(COLOR_WHITE)

Кольори в бібліотеці pygame представлені відповідно до моделі RGB кортежом з трьох чисел від 0 до 255.Колір також можна задати назвою в лапках. Повний список назв кольорів можна знайти за цим посиланням. Наприклад

player.fill(‘white’)

Відображення поверхні виконується за допомогою методу blit(), який застосовується до батьківської поверхні Surface, тоді як дочірня передається як аргумент. Також у метод треба передати координати розміщення верхнього лівого кута дочірньої поверхні в координатній батьківській системі або Rect, верхній лівий кут якого використовуватиметься як позиція.

main_display.blit(player, (0, 0))

або

player_rect = player.get_rect()

main_display.blit(player, player_rect)

Ще одним ключовим класом у pygame є Rect. Його примірниками є прямокутні області. Вони не мають графічного уявлення у вікні гри. Цінність класу полягає у властивостях та методах, що дозволяють керувати розміщенням поверхонь, виконувати перевірку їх перекриття та ін.

Метод поверхні get_rect() повертає примірник Rect, ширина і висота якого збігаються з такими поверхні.

Насправді графічні об'єкти, які ми хочемо розмістити на основному екрані, спочатку потрапляють у спеціальний буфер. Щоб відобразити зміни стали видно, викликаємо функцію flip().

pygame.display.flip()