Перший ігровий проєкт ("Прибульці")
Бібліотека pygame zero входить у пакет редактора: https://codewith.mu/
PyGameZero - це обгортка навколо потужної бібліотеки PyGame для написання відеоігор за допомогою Python для новачків. За допомогою PyGameZero написати розважальну гру надзвичайно просто, буквально за декілька рядків коду.
Для запуску проекту потрібно натиснути Play (для зупинки - Stop, яка замінює Play під час роботи проекту). Доступ до папок із мультимедійними об'єктами забезпечується кнопками Images, Fonts, Sounds, Music.
Підключивши цю бібліотеку, можемо програмувати графічні ігрові програми.
Команди:
WIDTH = 500
HEIGHT = 500
визначають розмір ігрового екрану.
Блок
def draw(): screen.fill((128, 0, 0))
Кодування кольорів відбувається у форматі Red,Green,Blue.
Як описати синій, фіолетовий, жовтий колір?
Розмістимо зображення кульки за допомогою команди:
screen.draw.circle((50,100), 25, (255, 0, 0))
(50,100) - координати розміщення
25 - радіус
(255, 0, 0) - колір
Звертайте увагу на дужки!
Прямокутник будується наступною командою:
screen.draw.rect(Rect((20, 20), (100, 100)), (255, 0, 0))
Rect((20, 20), (100, 100)) - координати діагоналі прямокутника (20,20) - початок діагоналі, (100,100) - кінець діагоналі. Зверніть увагу на написання команди Rect з великої літери!
(255, 0, 0) - колір.
Замість геометричних фігур можна використовувати спрайти із зображеннями. Наприклад,
alien = Actor('alien')
підключає до проекту файл alien.png (він має бути розміщений у каталозі Images середовища програмування)
Команда
alien.pos = 100, 56
задає координати розміщення цього спрайту.
Додавши команду:
alien.draw()
у функцію def draw(): побачимо відповідне зображення у вказаних координатах
def draw():
screen.clear()
alien.draw()
Для того, щоб спрайт рухався, існує функція update():
def update():
alien.left += 2
if alien.left > WIDTH:
alien.right = 0
У ній вказано, що спрайт має рухатись праворуч (збільшувати відстань від лівого краю сцени на 2 пікселі). Коли (якщо) він досягне правої межі сцени, має переміститись за її лівий край.
Як змусити спрайт натомість "відбитись" від межі?
Потрібна змінна а, яка буде визначати напрямок зміни відстані від лівого краю: якщо є рух праворуч, то потрібно додавати додатнє значення, якщо ліворуч - додавати вже від'ємне значення.
def update():
global a
alien.left += a
if alien.left > WIDTH:
a = a*(-1)
Зверніть увагу, що для можливості зміни значення змінної a всередині функції update(), потрібно зазначити, що ця змінна є глобальною.
Подумайте, яку команду потрібно додати, щоб спрайт відбивався від другої межі екрану.
Як зробити так, щоб спрайт рухався не лише по горизонталі, але й по вертикалі?
Як змінити швидкість руху спрайта?
Як змінити напрям (кут) руху спрайта?
https://pygame-zero.readthedocs.io/en/stable/introduction.html