1 Что такое Pygame?
Pygame — это библиотека для Python, которая позволяет создавать игры и мультимедийные приложения. Она предоставляет инструменты для работы с графикой, звуком, вводом от пользователя и многим другим.
Что можно создать с Pygame?
- 🎮 2D-игры (платформеры, аркады, головоломки)
- 🎨 Интерактивные приложения и анимации
- 🎵 Программы для работы со звуком
- 🖼️ Простые графические редакторы
# Минимальная программа на Pygame
import pygame
# Инициализация Pygame
pygame.init()
# Создание окна
screen = pygame.display.set_mode((800, 600))
# Заголовок окна
pygame.display.set_caption("Моя первая игра!")
# Игровой цикл
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# Обновление экрана
pygame.display.flip()
pygame.quit()
Разбор программы
pygame.init() — инициализирует все модули Pygame.
pygame.display.set_mode() — создаёт игровое окно указанного размера.
Игровой цикл — бесконечный цикл, который обрабатывает события и обновляет экран.
pygame.quit() — корректно закрывает Pygame при завершении программы.
2 Установка Pygame
Перед началом работы нужно установить библиотеку Pygame. Это делается через пакетный менеджер pip.
# Установка Pygame
pip install pygame
# Проверка установки
pip show pygame
Важно!
Если у вас несколько версий Python, используйте:
pip3 install pygame
Или для конкретного Python:
python -m pip install pygame
Совет
После установки проверьте, что Pygame работает:
import pygame
print(pygame.ver)
Если версия вывелась без ошибок — установка успешна!
3 Создание окна
Окно — это основа любой игры. В Pygame окно создаётся функцией pygame.display.set_mode().
import pygame
pygame.init()
# Размер окна (ширина, высота)
WIDTH, HEIGHT = 800, 600
screen = pygame.display.set_mode((WIDTH, HEIGHT))
# Заголовок окна
pygame.display.set_caption("Игра на Pygame")
# Иконка окна (опционально)
# icon = pygame.image.load('icon.png')
# pygame.display.set_icon(icon)
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
screen.fill((0, 0, 0)) # Чёрный фон
pygame.display.flip()
pygame.quit()
Цвета в Pygame
Цвета задаются кортежем (R, G, B)
(255, 0, 0) # Красный
(0, 255, 0) # Зелёный
(0, 0, 255) # Синий
Частота кадров
Ограничивает FPS для стабильности
clock = pygame.time.Clock()
clock.tick(60) # 60 FPS
4 Игровой цикл
Игровой цикл (Game Loop) — это сердце любой игры. Он постоянно выполняется и делает три вещи:
- Обрабатывает события (нажатия клавиш, движение мыши)
- Обновляет состояние игры (позиции объектов, физику)
- Отрисовывает кадр (рисует всё на экране)
import pygame
pygame.init()
screen = pygame.display.set_mode((800, 600))
clock = pygame.time.Clock()
running = True
while running:
# 1. Обработка событий
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# 2. Обновление состояния игры
# (здесь будет логика игры)
# 3. Отрисовка
screen.fill((30, 30, 30)) # Очистка экрана
# Здесь будет отрисовка объектов
pygame.display.flip() # Обновление экрана
clock.tick(60) # 60 FPS
pygame.quit()
Внимание!
Без clock.tick() цикл будет выполняться максимально быстро, что может перегрузить процессор.
Всегда ограничивайте FPS!
5 Отрисовка фигур
Pygame позволяет рисовать простые фигуры: прямоугольники, круги, линии и многоугольники.
import pygame
pygame.init()
screen = pygame.display.set_mode((800, 600))
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
screen.fill((255, 255, 255)) # Белый фон
# Прямоугольник: (поверхность, цвет, (x, y, ширина, высота))
pygame.draw.rect(screen, (255, 0, 0), (100, 100, 50, 50))
# Круг: (поверхность, цвет, (x, y), радиус)
pygame.draw.circle(screen, (0, 255, 0), (300, 300), 40)
# Линия: (поверхность, цвет, (x1, y1), (x2, y2), толщина)
pygame.draw.line(screen, (0, 0, 255), (0, 0), (800, 600), 3)
# Эллипс: (поверхность, цвет, (x, y, ширина, высота))
pygame.draw.ellipse(screen, (255, 255, 0), (500, 200, 100, 60))
pygame.display.flip()
pygame.quit()
Прямоугольник
pygame.draw.rect(surface, color, (x, y, w, h))
Круг
pygame.draw.circle(surface, color, (x, y), radius)
Линия
pygame.draw.line(surface, color, (x1, y1), (x2, y2), width)
Многоугольник
pygame.draw.polygon(surface, color, [(x1,y1), (x2,y2), ...])
6 Обработка событий
События — это действия пользователя: нажатие клавиш, движение мыши, закрытие окна.
Все события обрабатываются в игровом цикле через pygame.event.get().
import pygame
pygame.init()
screen = pygame.display.set_mode((800, 600))
running = True
while running:
for event in pygame.event.get():
# Закрытие окна
if event.type == pygame.QUIT:
running = False
# Нажатие клавиши
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_ESCAPE:
running = False
if event.key == pygame.K_SPACE:
print("Пробел нажат!")
# Движение мыши
if event.type == pygame.MOUSEMOTION:
x, y = event.pos
print(f"Мышь: ({x}, {y})")
# Клик мыши
if event.type == pygame.MOUSEBUTTONDOWN:
print("Клик мыши!")
screen.fill((0, 0, 0))
pygame.display.flip()
pygame.quit()
| Событие | Описание |
|---|---|
pygame.QUIT |
Закрытие окна |
pygame.KEYDOWN |
Нажатие клавиши |
pygame.KEYUP |
Отпускание клавиши |
pygame.MOUSEMOTION |
Движение мыши |
pygame.MOUSEBUTTONDOWN |
Нажатие кнопки мыши |
pygame.MOUSEBUTTONUP |
Отпускание кнопки мыши |
Совет
Для проверки состояния клавиш в реальном времени используйте:
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
# Движение влево
7 Работа с изображениями
В играх часто используются спрайты — изображения персонажей, объектов и фонов. Pygame позволяет загружать и отображать изображения.
import pygame
pygame.init()
screen = pygame.display.set_mode((800, 600))
# Загрузка изображения
player = pygame.image.load("player.png")
# Изменение размера (опционально)
player = pygame.transform.scale(player, (50, 50))
# Позиция игрока
player_x, player_y = 100, 100
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
screen.fill((30, 30, 30))
# Отрисовка изображения
screen.blit(player, (player_x, player_y))
pygame.display.flip()
pygame.quit()
Важно!
screen.blit() — метод для отрисовки изображения на поверхности.
Первый параметр — изображение, второй — координаты (x, y).
Совет
Для работы с прозрачностью используйте изображения в формате PNG. Формат JPG не поддерживает прозрачный фон.
8 Практика
Отлично! Теперь давай закрепим знания на практике. Реши несколько заданий:
Создание окна
Создай окно Pygame размером 640×480 с заголовком "Моя игра".
Подсказка
Используй pygame.display.set_mode((640, 480)) и pygame.display.set_caption().
Отрисовка круга
Нарисуй красный круг радиусом 30 в центре экрана (320, 240).
Подсказка
Используй pygame.draw.circle() с цветом (255, 0, 0).
Движение квадрата
Создай квадрат, который двигается вправо при нажатии стрелки вправо.
Подсказка
Используй pygame.key.get_pressed() для проверки нажатия клавиш.
Обработка клика мыши
При клике мыши рисуй круг в месте клика.
Подсказка
Используй событие pygame.MOUSEBUTTONDOWN и event.pos.
Ограничение движения
Сделай так, чтобы квадрат не выходил за границы экрана.
Подсказка
Проверяй координаты: если x < 0 или x > ширина - размер, не двигай.
Прыгающий мяч
Создай мяч, который падает вниз и отскакивает от нижней границы экрана.
Подсказка
Используй переменную скорости по Y. При достижении низа меняй направление.
Игра "Ловец"
Создай игру: игрок управляет корзиной, сверху падают предметы. Нужно ловить их корзиной.
Подсказка
Используй прямоугольник для корзины и круг для предмета. Проверяй столкновения.
Мини-платформер
Создай простую игру: персонаж может бегать и прыгать по платформам.
Подсказка
Используй гравитацию, проверку столкновений с платформами и управление клавишами.