Pygame Zero — це бібліотека для початківців, що спрощує створення ігор на Python. Вона базується на Pygame, але приховує складні деталі, дозволяючи зосередитися на логіці гри.
Головні переваги:
Приклад найпростішої програми:
import pgzrun
WIDTH = 800
HEIGHT = 600
# Створюємо актора (спрайт)
actor = Actor('alien') # alien.png має бути у теці images/
actor.pos = (400, 300)
def draw():
screen.clear()
actor.draw()
def on_mouse_move(pos):
actor.pos = pos
pgzrun.go()
↑ До змісту У Pygame Zero основні об'єкти — це спрайти , їх ще називають акторами (Actor). Актор — це спрайт з програмним керуванням (переміщення, поворот, тощо).
Створення актора:
actor = Actor('image_name')
де 'image_name' — назва файлу зображення (без
розширення), який має знаходитися в папці images.
images поруч із
файлом гри. Розмір вікна гри задається змінними WIDTH та HEIGHT.
Ці змінні повинні бути визначені на початку програми.
WIDTH = 800
HEIGHT = 600
player = Actor('player')
player.pos = 100, 56
Координати в Pygame Zero починаються з верхнього лівого кута екрану (0,
0). Позиція актора задається через властивість pos (або
окремо x та y).
Функція draw() викликається автоматично для перемалювання
всіх об'єктів, які знаходяться на екрані.
def draw():
screen.clear()
player.draw()
enemy.draw()
screen.draw.text("Рахунок: " + str(score), (10, 10))
Важливо завжди починати з screen.clear(), щоб очистити
попередній кадр. Для малювання тексту використовуйте screen.draw.text().
Актори мають багато корисних властивостей:
pos — позиція (x, y)x, y — окремі координатиangle — кут повороту (у градусах)opacity — непрозорістьscale — масштаб (1.0 = оригінальний розмір)image — назва поточного зображенняplayer = Actor('hero')
player.pos = (400, 300)
player.angle = 45
player.scale = 1.5
# Зміна зображення
player.image = 'hero_angry'
image залежно від стану гри. Переміщення об'єктів відбувається у функції update(), яка
викликається перед кожним перемалюванням.
def update():
if keyboard.right:
player.x += 5
if keyboard.left:
player.x -= 5
if keyboard.up:
player.y -= 5
if keyboard.down:
player.y += 5
↑ До змісту Pygame Zero надає простий доступ до стану клавіш через об'єкт keyboard.
def update():
if keyboard.space:
fire_bullet()
if keyboard.a:
player.x -= 3
if keyboard.d:
player.x += 3
Можна також використовувати спеціальні функції для обробки натискання клавіш:
def on_key_down(key):
if key == keys.SPACE:
create_explosion()
elif key == keys.ESCAPE:
exit()
↑ До змісту Обробка подій миші здійснюється через спеціальні функції:
def on_mouse_down(pos, button):
if button == mouse.LEFT:
print("Ліва кнопка натиснута в", pos)
elif button == mouse.RIGHT:
print("Права кнопка натиснута")
def on_mouse_move(pos):
player.pos = pos
Ви також можете перевіряти стан кнопок миші у функції update():
def update():
if mouse.LEFT:
player.angle += 2
↑ До змісту Для роботи зі звуком використовуйте модуль music та
функцію play_sound().
# Відтворення звуку
def on_key_down(key):
if key == keys.SPACE:
sounds.jump.play()
# Керування музикою
music.play('background_theme')
music.set_volume(0.5)
# Зупинка музики
music.stop()
Звукові файли повинні знаходитися в папці sounds (для
коротких звуків) або music (для фонової музики).
Для відкладеного виконання коду використовуйте функцію clock.schedule().
def spawn_enemy():
enemies.append(Actor('enemy'))
# Створювати ворога кожні 3 секунди
clock.schedule_interval(spawn_enemy, 3.0)
# Виконати функцію через 5 секунд один раз
clock.schedule(game_over, 5.0)
def game_over():
print("Час вичерпано!")
Щоб скасувати заплановану подію, збережіть посилання на неї:
def cancel_timer():
global spawn_event
clock.unschedule(spawn_event)
spawn_event = clock.schedule_interval(spawn_enemy, 2.0)
↑ До змісту