Учебник Игры на Python с Pygame для начинающих
Полный практический курс по созданию 2D-игр на Python с библиотекой Pygame (современная pygame-ce). Ты пройдёшь путь от пустого окна до готовой аркады: освоишь игровой цикл, рисование спрайтов, движение через векторы, коллизии и гравитацию, звук, счёт, уровни и простой ИИ врагов.
Главная фишка курса — игровая логика подаётся как математика, которую можно проверить прямо в браузере без установки Pygame: коллизии, физика прыжка, ИИ и генерация уровней запускаются как обычный Python. Графический код Pygame ты увидишь рядом и поймёшь, как соединить одно с другим.
Курс «Игры на Python с Pygame» состоит из 6 разделов и 24 уроков: Введение и игровой цикл, Графика и спрайты, Движение и управление, Коллизии и физика, Звук, счёт и уровни и Собираем игру целиком. Уроки идут по порядку — от основ к более сложным темам, в каждом есть объяснение с примерами, а в конце — вопросы для самопроверки. К урокам привязаны задачи с автоматической проверкой: прочитали тему — сразу закрепили её кодом.
Программа курса
1 Введение и игровой цикл
- Что такое игровой цикл
Игровой цикл в Pygame: события, обновление, отрисовка и кадр — сердце любой 2D-игры на Python.
- Окно и система координат
Окно Pygame и система координат: начало в левом верхнем углу, ось Y направлена вниз, центр через WIDTH//2.
- Установка и первое окно
Установка pygame-ce через pip и первое рабочее окно с обработкой событий QUIT и ESC.
- Время и FPS: delta time
Delta time (dt) в Pygame: движение, не зависящее от частоты кадров. Скорость в пикселях в секунду умножаем на dt.
- Что такое игровой цикл
2 Графика и спрайты
- Рисуем фигуры: rect, circle, line
Примитивы pygame.draw: прямоугольник, круг и линия. Прототипирование игры серыми коробками.
- Rect — главный кубик игры
pygame.Rect: позиция, размер и удобные свойства center, right, bottom, а также проверка столкновений colliderect.
- Загрузка картинок и blit
Загрузка изображений в Pygame: image.load, convert_alpha для прозрачности и отрисовка через screen.blit.
- Спрайты и группы
pygame.sprite.Sprite и Group: классы объектов с image и rect, групповое обновление и отрисовка, kill().
- Рисуем фигуры: rect, circle, line
3 Движение и управление
- Клавиатура: события и состояние
Два способа чтения клавиатуры в Pygame: события KEYDOWN для действий и key.get_pressed для движения.
- Вектор движения и скорость
Вектор скорости (vx, vy) и Vector2 в Pygame: позиция меняется на скорость умножить на dt.
- Мышь: прицел и выстрел
Мышь в Pygame: get_pos и MOUSEBUTTONDOWN. Выстрел в курсор через нормализованный вектор направления.
- Ускорение, скорость и трение
Инерционное движение в Pygame: ускорение меняет скорость, скорость меняет позицию, трение тормозит.
- Клавиатура: события и состояние
4 Коллизии и физика
- AABB: столкновение прямоугольников
AABB-коллизия в Pygame: два прямоугольника сталкиваются, если перекрываются и по X, и по Y. colliderect.
- Коллизии спрайтов и групп
spritecollide и groupcollide в Pygame: коллизии спрайта с группой и группы с группой, флаг dokill.
- Гравитация и прыжок
Гравитация и прыжок в Pygame: постоянное ускорение вниз, отрицательная стартовая скорость прыжка, обнуление на земле.
- Разрешение коллизий по осям
Разрешение коллизий в Pygame: раздельное движение по X и Y, выдвижение героя к грани стены по направлению.
- AABB: столкновение прямоугольников
5 Звук, счёт и уровни
- Звук и музыка
Звук в Pygame: короткие эффекты через mixer.Sound и фоновая музыка через mixer.music со стримингом.
- Текст и счёт на экране
Текст в Pygame: font.render превращает строку в картинку, blit рисует её. Вывод счёта, жизней и таймера.
- Очки, жизни и конец игры
Игровое состояние в Pygame: score, lives, game_over. Подсчёт очков, потеря жизней и условия победы и поражения.
- Уровни и процедурная генерация
Уровни в Pygame: текстовые карты и процедурная генерация. Описываем уровень данными, строим объекты кодом.
- Звук и музыка
6 Собираем игру целиком
- Состояния игры: меню, пауза, конец
Машина состояний в Pygame: меню, игра, пауза, game over. Одна переменная state и переходы по событиям.
- Простой ИИ врагов
ИИ врагов в Pygame: патруль, преследование и атака по порогам расстояния до игрока. Чистая логика без нейросетей.
- Собираем игру целиком
Архитектура готовой игры на Pygame: состояния, игровой цикл, спрайт-группы, коллизии и HUD складываются вместе.
- Полировка, оптимизация и шеринг
Финальные штрихи игры на Pygame: джус (анимации, тряска экрана), оптимизация и упаковка в exe через PyInstaller.
- Состояния игры: меню, пауза, конец