Установка и настройка Pygame
Pygame — это библиотека, предназначенная для написания компьютерных игр и приложений на языке Python. Она облегчает работу с графикой, анимацией, звуками и настройку взаимодействия с пользователем. Вместо того чтобы писать десятки строк сложного кода, можно использовать уже готовые функции библиотеки. Так вы сможете создавать игры быстрее и эффективнее.
В создании игры «Змейка» на Python Pygame будет отвечать за:
В создании игры «Змейка» на Python Pygame будет отвечать за:
- отрисовку игрового поля и всех элементов на нем,
- реализацию управления с помощью клавиатуры,
- создание анимации движений змейки,
- обработку столкновений и подсчет очков.
Системные требования
Чтобы работать с Pygame, не нужен мощный компьютер. Библиотека поддерживается на Windows, macOS и Linux.
Что понадобится:
Что понадобится:
- Python. Установите или обновите Python до наиболее оптимальной версии, совместимой с Pygame, 3.13.0 или выше. Это можно сделать, скачав инсталлятор с официального сайта Python. Во время установки обязательно поставьте галочку напротив Add Python to PATH, чтобы не пришлось вручную настраивать переменные окружения.
- Среда разработки (например, VS Code или стандартный IDLE). Выберите ту, с которой вам комфортно работать.
- Стабильный доступ к интернету, для корректной установки всего необходимого.
Установка Pygame
Чтобы установить библиотеку, запустите терминал или командную строку и выполните:
pip install pygame
python3 -m pip install pygame
Благодаря встроенному инструменту Python — pip — этот процесс автоматизирован.
Подготовка среды разработки
После установки Pygame важно настроить рабочую среду, чтобы все компоненты корректно взаимодействовали:
Убедитесь, что Python успешно установлен: откройте терминал (или командную строку) и введите:
- Проверка Python.
Убедитесь, что Python успешно установлен: откройте терминал (или командную строку) и введите:
python --version
Если появится номер версии, все готово.
Далее стоит проверить, корректно ли установлена Pygame. Для этого выполните:
- Создание проекта.
- Проверка библиотеки.
Далее стоит проверить, корректно ли установлена Pygame. Для этого выполните:
import pygame
print(pygame.ver)
Если ошибок нет и отображается версия, значит, библиотека готова к использованию.
Также существует альтернативная проверка: python -m pygame.examples.aliens для быстрого запуска встроенного примера.
Также существует альтернативная проверка: python -m pygame.examples.aliens для быстрого запуска встроенного примера.
Советы для успешного старта
- Организация файлов: убедитесь, что вы создали четкую структуру проекта. Например, папки для кода, ресурсов (картинок, звуков) и других файлов. Это особенно важно, если в будущем вы захотите улучшить игру.
- Установка дополнительных библиотек: если вы планируете дополнить игру более сложными функциями, такими как анимации и спецэффекты, убедитесь, что у вас есть все необходимое. Хотя для создания «Змейки» на Python достаточно только Pygame.
- Резервное копирование: настройте систему сохранения кода. Это поможет восстановить проект, если что-то пойдет не так. Используйте Git или хотя бы регулярно сохраняйте копии кода на компьютере.

Все файлы, используемые при создании игры «Змейка» на Python, важно четко структурировать, чтобы в дальнейшем можно было вносить изменения в проект
Инициализация Pygame и работа с модулями
На этом этапе важно настроить все инструменты, которые позволят запустить игру, управлять элементами и создавать визуальные эффекты.
Для начала работы с Pygame необходимо импортировать модули. Это похоже на добавление инструментов в набор для творчества. Без них библиотека не сможет выполнять ключевые задачи: рисовать объекты, обрабатывать нажатие клавиш и управлять временем.
Импорт — это способ сообщить Python: «Я собираюсь использовать функции Pygame в своем проекте». Для этого понадобятся следующие команды:
Для начала работы с Pygame необходимо импортировать модули. Это похоже на добавление инструментов в набор для творчества. Без них библиотека не сможет выполнять ключевые задачи: рисовать объекты, обрабатывать нажатие клавиш и управлять временем.
Импорт — это способ сообщить Python: «Я собираюсь использовать функции Pygame в своем проекте». Для этого понадобятся следующие команды:
import pygame
import sys
import random
Каждый модуль выполняет свою задачу:
- pygame — это сердце нашей игры, оно отвечает за отрисовку, анимацию и взаимодействие с пользователем;
- sys — системный модуль для корректного завершения игры при нажатии кнопки «Закрыть»;
- random пригодится, чтобы создавать случайную еду на игровом поле.
Инициализация библиотеки
Этот процесс можно сравнить с запуском автомобиля: сначала «включаем зажигание» и готовим систему к работе. Инициализация проверяет, все ли готово для старта, и активирует основные компоненты: управление окном, графикой, событиями и звуком. Делается это одной строкой:
pygame.init()
Если инициализация прошла успешно, Pygame будет готов к дальнейшим действиям. Если же что-то пошло не так, например, система не может загрузить аудио драйвера, вы получите уведомление об ошибке, что поможет быстро найти и устранить проблему.
Какие модули нужны для создания игры
- pygame.display — управляет игровым окном. Через этот модуль мы создадим поле, где будет происходить действие.
- pygame.draw — используется для отрисовки фигур, например, змейки и еды.
- pygame.event — обрабатывает события, например, нажатия клавиш или закрытие окна.
- pygame.time — помогает задавать скорость игры, например, скорость движения змейки.
- pygame.font — отображает текст, например, счет игрока.
Эти модули работают как отдельные инструменты, комбинация которых позволит разработать полноценную игру.
Отрисовка игрового поля: Display и Surface
На этом этапе следует создать главное окно игры (display) — оно станет «холстом» для всех визуальных элементов. Также предстоит работать с поверхностями (surface) — это своеобразные строительные блоки графики, на которых можно рисовать, менять изображения и управлять их отображением на экране.
Что такое Display
Display — это главное окно, которое игрок видит на экране. Именно здесь будет происходить весь игровой процесс: змейка будет двигаться, еда появляться, а очки увеличиваться.
В Pygame создать display можно при помощи функции pygame.display.set_mode(). Она задает параметры окна и возвращает объект, на котором предстоит рисовать. Также можно сделать заголовок окна, с функцией set_caption().
Например, в игре «Змейка» размер игрового поля определяет пространство, где будет перемещаться змейка. Его можно настроить как квадратное поле, например, 800x800 пикселей или прямоугольное (800x600 пикселей), в зависимости от предпочтений.
Параметры, которые нужно учитывать:
В Pygame создать display можно при помощи функции pygame.display.set_mode(). Она задает параметры окна и возвращает объект, на котором предстоит рисовать. Также можно сделать заголовок окна, с функцией set_caption().
Например, в игре «Змейка» размер игрового поля определяет пространство, где будет перемещаться змейка. Его можно настроить как квадратное поле, например, 800x800 пикселей или прямоугольное (800x600 пикселей), в зависимости от предпочтений.
Параметры, которые нужно учитывать:
- Ширина и высота поля: задаются в пикселях и передаются в виде кортежа — неизменяемого упорядоченного набора элементов, похожего на список. Например, (800, 600).
- Дополнительные флаги: можно добавить, чтобы изменять свойства окна (например, полноэкранный режим).
Как взаимодействуют Display и Surface
Отрисовка в Pygame всегда идет в два этапа:
- Рисуете графику на поверхностях (surface).
- Переносите эти поверхности на экран (display).
Настройка фона игрового поля
Одна из первых задач в отрисовке поля — задание фона. Для этого нужен метод fill() — он закрашивает поверхность выбранным цветом. Цвет задается в формате RGB — это три числа от 0 до 255, которые описывают красный, зеленый и синий цвет.
Например:
Фон помогает выделить пространство, где будет происходить игра, и создать атмосферу.
В игре «Змейка» на Python отрисовка поля — это больше, чем просто эстетика. От правильного оформления окна и работы с поверхностями зависит то, как будут восприниматься границы поля, элементы и даже динамика игры.
Например:
- (0, 0, 0) для черного;
- (255, 255, 255) для белого;
- (34, 139, 34) для зеленого, напоминающего цвет травы.
Фон помогает выделить пространство, где будет происходить игра, и создать атмосферу.
В игре «Змейка» на Python отрисовка поля — это больше, чем просто эстетика. От правильного оформления окна и работы с поверхностями зависит то, как будут восприниматься границы поля, элементы и даже динамика игры.
Что еще нужно знать
- Размер поля определяет масштаб игры. Если вы выберете слишком маленькое окно, игра будет тесной и неудобной. Слишком большое — может стать сложным для восприятия.
- Display и Surface работают вместе. Вы можете создавать множество поверхностей, но только одна — главная (display) — покажет игроку финальную картинку.
- Цветовая палитра имеет значение. Фон, змейка, еда и счет должны визуально отличаться, чтобы игрок мог легко ориентироваться на поле.
Как привязать размеры к игровым элементам
Чтобы игровое пространство смотрелось аккуратно, размеры объектов (змейки, еды) лучше привязывать к сетке. Например, если каждый элемент занимает квадрат 20×20 пикселей, то поле должно делиться на такие квадраты без остатка:
# Размеры клетки
CELL_SIZE = 20
# Поле делится на клетки
GRID_WIDTH = WIDTH // CELL_SIZE
GRID_HEIGHT = HEIGHT // CELL_SIZE
Теперь вся графика будет масштабироваться пропорционально клеткам. Это упрощает работу с игровыми объектами и их позиционированием.
Работа с изображениями и прямоугольниками
В Pygame для работы с графическими элементами есть мощная система прямоугольников (Rect) и изображений (Images). Она позволяет управлять позициями, размерами и взаимодействием объектов на игровом поле.
Что такое Rect
Прямоугольники (или Rect) — это основа многих графических операций в Pygame. Они описывают границы объекта: координаты верхнего левого угла, ширину и высоту. С помощью Rect можно:
Прямоугольники можно создавать вручную или используя изображения. Если вы работаете с изображением, Rect автоматически создастся при загрузке:
Чтобы перемещать объект, нужно просто менять координаты прямоугольника. Например, голова змейки будет двигаться по игровому полю за счет изменения координат ее Rect.
- определять, где находится объект на экране;
- проверять столкновения, например, когда змейка съедает еду;
- перемещать объекты по игровому полю.
Прямоугольники можно создавать вручную или используя изображения. Если вы работаете с изображением, Rect автоматически создастся при загрузке:
- верхний левый угол прямоугольника задает его начальное положение на экране;
- размер прямоугольника определяется изображением или задается вручную.
Чтобы перемещать объект, нужно просто менять координаты прямоугольника. Например, голова змейки будет двигаться по игровому полю за счет изменения координат ее Rect.
Зачем нужны изображения
С ними игра становится визуально привлекательной. Вместо однотонных квадратов можно использовать графику для змейки, еды или фона. Например, добавить змейке текстуру, а вместо квадратной еды сделать иконку в виде яблока.
Чтобы загрузить изображение, воспользуйтесь опцией pygame.image.load(). Например, если вы хотите, чтобы еда выглядела как яблоко, загрузите соответствующий файл.
Изображения в Pygame должны быть следующих форматов: PNG, JPG, GIF и BMP. Также важно помнить, что они обрабатываются как прямоугольники. Даже если ваше изображение круглое, библиотека все равно видит его как прямоугольный блок.
Иногда загруженное изображение оказывается слишком большим или маленьким для игрового поля. В таких случаях его можно масштабировать с помощью функции pygame.transform.scale(). Например, если вы создали поле размером 800x600 пикселей, а изображение еды занимает 200x200, его нужно уменьшить.
Чтобы игра работала быстрее, изображения стоит преобразовать в подходящий формат для Pygame. Это можно сделать с помощью метода .convert() — для простых изображений или .convert_alpha() — если у изображения есть прозрачность.
После того как загрузите изображение, его нужно привязать к прямоугольнику, что особенно важно для сложной графики. Воспользуйтесь rect = image.get_rect().
Чтобы загрузить изображение, воспользуйтесь опцией pygame.image.load(). Например, если вы хотите, чтобы еда выглядела как яблоко, загрузите соответствующий файл.
Изображения в Pygame должны быть следующих форматов: PNG, JPG, GIF и BMP. Также важно помнить, что они обрабатываются как прямоугольники. Даже если ваше изображение круглое, библиотека все равно видит его как прямоугольный блок.
Иногда загруженное изображение оказывается слишком большим или маленьким для игрового поля. В таких случаях его можно масштабировать с помощью функции pygame.transform.scale(). Например, если вы создали поле размером 800x600 пикселей, а изображение еды занимает 200x200, его нужно уменьшить.
Чтобы игра работала быстрее, изображения стоит преобразовать в подходящий формат для Pygame. Это можно сделать с помощью метода .convert() — для простых изображений или .convert_alpha() — если у изображения есть прозрачность.
После того как загрузите изображение, его нужно привязать к прямоугольнику, что особенно важно для сложной графики. Воспользуйтесь rect = image.get_rect().
Rect и изображения: работа в связке
- Прямоугольник как «контур» изображения: даже если вы добавляете в игру красивую текстуру или картинку, Pygame использует прямоугольник для управления этим изображением. Фактически, прямоугольник — это невидимая коробка вокруг вашего изображения.
- Рисование на экране: после загрузки изображения и его Rect вы «привязываете» прямоугольник к дисплею. Это позволяет размещать изображение в нужном месте.
Как это работает в «Змейке»?
- Змейка состоит из нескольких прямоугольников (сегментов). Их размеры и местоположение определяются через Rect. При движении координаты этих прямоугольников обновляются, создавая иллюзию движения.
- Еда представляет собой либо простой прямоугольник, закрашенный цветом, либо изображение. Rect определяет ее положение, а метод colliderect() помогает определить, когда змейка съест еду.
- Границы игрового поля тоже можно задать через Rect, чтобы проверить, не столкнулась ли змейка с краем экрана.
Важные моменты
- Размеры и пропорции: убедитесь, что размеры изображения и прямоугольника соответствуют масштабу игрового поля.
- Оптимизация: работайте с преобразованными изображениями (convert()), чтобы избежать замедлений.
- Проверка столкновений: используйте встроенные методы Rect, к примеру, colliderect(), чтобы упростить логику игры.
Разработка правил игры «Змейка»
Рассмотрим основные правила, которые делает игру одновременно простой и увлекательной:
- Змейка движется по игровому полю. Игрок управляет змейкой. Направление ее движения можно задать стрелками или другими клавишами. Важно: змейка не должна останавливаться, и игрок должен реагировать быстро.
- Задача игрока. Цель игры — управлять змейкой так, чтобы она собирала еду на игровом поле. С каждым съеденным объектом змейка становится длиннее, а игрок зарабатывает очки.
- Ограничение поля. Змейка должна оставаться в пределах поля. Если она пересекает границу экрана, игра завершается.
- Столкновения. Если голова змейки сталкивается с телом или границей поля, игра завершена.
- Еда. Она появляется случайным образом в пределах поля. После того как змейка съедает еду, сразу появляется новая. Сложность игры увеличивается с каждым новым объектом: змейка становится длиннее, а поле — теснее.
- Счет (Score) увеличивается после каждой съеденной еды. Чем больше очков, тем выше достижения игрока. Для интереса можно предусмотреть рейтинг с рекордами, чтобы игроки стремились побить свои или чужие результаты.

Чем больше еды съедает змейка, тем она становится длиннее — а значит, повышается уровень сложности игры
Дополнительные элементы для улучшения игры
Хотя классическая версия «Змейки» имеет простые правила, их можно разнообразить:
- Бонусы и усиления. Например, можно добавлять редкие объекты, которые дают больше очков или временно ускоряют змейку.
- Уровни сложности. Можно предусмотреть разные режимы, где игрок выбирает размер поля, скорость змейки или частоту появления еды.
- Препятствия. Можно добавить, например, стены, чтобы игроку пришлось продумывать маршрут движения.
- Ограничение времени. Добавление таймера для сбора еды делает игру более динамичной и напряженной.
Пошаговое создание «Змейки» с нуля
Выше подробно рассмотрели основные этапы создания игры, теперь переходим к руководству, где пошагово отразим перечисленные алгоритмы действий с примерами кода.
Шаг 0. Запуск Python
Прежде чем приступить к созданию игры, убедитесь, что у вас все настроено:
Запустите среду и напишите базовый код, чтобы проверить, что все работает:
- Установлен Python (рекомендуемая версия от 3.13.0 или выше).
- Установлена библиотека Pygame (команда: pip install pygame).
- Есть среда разработки (IDE), например, PyCharm, VS Code или просто текстовый редактор с терминалом.
Запустите среду и напишите базовый код, чтобы проверить, что все работает:
import pygame
pygame.init()
print("Добро пожаловать в змейку!")
pygame.quit()
Если код выполняется без ошибок, можно приступать к следующему шагу.
Шаг 1. Отрисовка игрового поля
Для создания игрового поля нам понадобится функция pygame.display.set_mode(). Сделаем его размером 800×600 пикселей:
import pygame
import sys
# Инициализация Pygame
pygame.init()
# Настройки игрового поля
WIDTH, HEIGHT = 800, 600 # Размеры экрана
CELL_SIZE = 20 # Размер одной ячейки
FPS = 10 # Частота обновления экрана
# Настройка цветов
FIELD_COLOR = (0, 0, 0) # Цвет фона (черный)
SNAKE_COLOR = (0, 255, 0) # Цвет змейки (зеленый)
FOOD_COLOR = (255, 0, 0) # Цвет еды (красный)
TEXT_COLOR = (255, 255, 255) # Цвет текста (белый)
# Создание окна
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("Змейка на Python")
clock = pygame.time.Clock()
# Основной игровой цикл
def main():
running = True
while running:
# Обработка событий
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
pygame.display.flip()
clock.tick(FPS) # Установка частоты обновления экрана
# Запуск игры
if __name__ == "__main__":
main()
Важно: «основной цикл игры», прописанный в коде, обязательно нужно использовать при создании «Змейки» на Python, иначе она не запустится.
После выполнения кода появится окно с черным фоном — основа для отрисовки остальных элементов.
После выполнения кода появится окно с черным фоном — основа для отрисовки остальных элементов.

Размер и фон игрового поля можно задать любыми в зависимости от предпочтений. На картинке представлено окно — 800х600 пикселей.
Шаг 2. Создание змейки
Главный персонаж игры будет состоять из списка сегментов, где каждый из них — это прямоугольник.
# Параметры змейки
CELL_SIZE = 20 # Размер одной ячейки
snake = [(100, 100), (80, 100), (60, 100)] # Начальная змейка
# Отрисовка змейки
for segment in snake:
pygame.draw.rect(screen, SNAKE_COLOR, pygame.Rect(segment[0], segment[1], CELL_SIZE, CELL_SIZE))
Так на экране отобразится змейка, состоящая из трех зеленых прямоугольников.

Змейка состоит из трех сегментов, каждый из которых представляет собой прямоугольник.
Шаг 3. Описание движений змейки
Чтобы она двигалась, нам нужно обновлять координаты головы и сдвигать остальные сегменты. Для управления будем использовать стрелки:
direction = "RIGHT" # Начальное направление
# Обработка событий
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_UP and direction != "DOWN":
direction = "UP"
elif event.key == pygame.K_DOWN and direction != "UP":
direction = "DOWN"
elif event.key == pygame.K_LEFT and direction != "RIGHT":
direction = "LEFT"
elif event.key == pygame.K_RIGHT and direction != "LEFT":
direction = "RIGHT"
# Обновление положения змейки
head_x, head_y = snake[0]
if direction == "UP":
head_y -= CELL_SIZE
elif direction == "DOWN":
head_y += CELL_SIZE
elif direction == "LEFT":
head_x -= CELL_SIZE
elif direction == "RIGHT":
head_x += CELL_SIZE
new_head = (head_x, head_y)
Так змейка будет двигаться, следуя заданному направлению.
Шаг 4. Установка границ игрового поля
Чтобы игра заканчивалась, если змейка сталкивается с краем поля, добавим проверку:
# Функция для проверки столкновений
def check_collision(position, snake_body):
return (
position in snake_body or
position[0] < 0 or
position[1] < 0 or
position[0] >= WIDTH or
position[1] >= HEIGHT
)
Далее добавляем проверку в наш основной цикл игры:
# Проверка столкновений
if check_collision(new_head, snake):
print(f"Игра окончена! Ваш счет: {score}")
running = False
break
Эта проверка завершает игру, если голова персонажа выходит за границы окна.
Шаг 5. Добавление еды для змейки
Еда для основного персонажа должна появляться на поле в случайном порядке. Для генерации ее координат нужен модуль random:
import random
food_position = (
random.randint(0, (WIDTH // CELL_SIZE) - 1) * CELL_SIZE,
random.randint(0, (HEIGHT // CELL_SIZE) - 1) * CELL_SIZE
)
# Отрисовка еды
pygame.draw.rect(screen, FOOD_COLOR, pygame.Rect(food_position[0], food_position[1], CELL_SIZE, CELL_SIZE))
После выполнения кода на экране можно будет увидеть красный квадрат — еду для змейки.

Чтобы создать еду, которая будет отображаться на игровом поле случайно, нужно использовать стандартный модуль Python — random.
Шаг 6. Увеличение длины змейки
После того как персонаж съедает еду, его размер увеличивается на один сегмент:
# Добавление новой головы змейки
snake.insert(0, new_head)
# Проверка на съедение еды
if new_head == food_position:
score += 1
food_position = (
random.randint(0, (WIDTH // CELL_SIZE) - 1) * CELL_SIZE,
random.randint(0, (HEIGHT // CELL_SIZE) - 1) * CELL_SIZE
)
else:
snake.pop() # Удаление последнего сегмента змейки
Теперь змейка будет расти, как только съест еду.
Шаг 7. Отображение и подсчет очков
Каждое поедание еды увеличивает score. Добавим отображение очков в верхний угол экрана:
# Функция для отображения счета
def draw_score(score):
score_text = font.render(f"Score: {score}", True, TEXT_COLOR)
screen.blit(score_text, (10, 10))
Добавим функцию подсчета очков в наш основной цикл игры:
# Отрисовка элементов игры
draw_score(score)
Теперь игрок может следить за своими достижениями.
Итоговый код и завершение проекта
Итак, мы подошли к самой важной части: объединению всех элементов, о которых говорили ранее, в единую структуру игры. Конечный код «Змейки» на Python будет охватывать все ключевые этапы: от настройки поля и создания змейки до управления движением, подсчета очков и проверки столкновений.
Перед запуском убедитесь, что Python и Pygame установлены на вашем компьютере. Как только все будет готово, выполните код, чтобы оживить вашу змейку.
Перед запуском убедитесь, что Python и Pygame установлены на вашем компьютере. Как только все будет готово, выполните код, чтобы оживить вашу змейку.
Полный код игры «Змейка»
import pygame
import sys
import random
# Инициализация Pygame
pygame.init()
# Настройки игрового поля
WIDTH, HEIGHT = 800, 600 # Размеры экрана
CELL_SIZE = 20 # Размер одной ячейки
FPS = 10 # Частота обновления экрана
# Настройка цветов
FIELD_COLOR = (0, 0, 0) # Цвет фона (черный)
SNAKE_COLOR = (0, 255, 0) # Цвет змейки (зеленый)
FOOD_COLOR = (255, 0, 0) # Цвет еды (красный)
TEXT_COLOR = (255, 255, 255) # Цвет текста (белый)
# Создание окна
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("Змейка на Python")
clock = pygame.time.Clock()
# Шрифт для отображения очков
font = pygame.font.Font(None, 36)
# Функция для отображения счета
def draw_score(score):
score_text = font.render(f"Score: {score}", True, TEXT_COLOR)
screen.blit(score_text, (10, 10))
# Функция для проверки столкновений
def check_collision(position, snake_body):
return (
position in snake_body or
position[0] < 0 or
position[1] < 0 or
position[0] >= WIDTH or
position[1] >= HEIGHT
)
# Основной игровой цикл
def main():
snake = [(100, 100), (80, 100), (60, 100)] # Начальная змейка
direction = "RIGHT" # Начальное направление
food_position = (
random.randint(0, (WIDTH // CELL_SIZE) - 1) * CELL_SIZE,
random.randint(0, (HEIGHT // CELL_SIZE) - 1) * CELL_SIZE
)
score = 0
running = True
while running:
# Обработка событий
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_UP and direction != "DOWN":
direction = "UP"
elif event.key == pygame.K_DOWN and direction != "UP":
direction = "DOWN"
elif event.key == pygame.K_LEFT and direction != "RIGHT":
direction = "LEFT"
elif event.key == pygame.K_RIGHT and direction != "LEFT":
direction = "RIGHT"
# Обновление положения змейки
head_x, head_y = snake[0]
if direction == "UP":
head_y -= CELL_SIZE
elif direction == "DOWN":
head_y += CELL_SIZE
elif direction == "LEFT":
head_x -= CELL_SIZE
elif direction == "RIGHT":
head_x += CELL_SIZE
new_head = (head_x, head_y)
# Проверка столкновений
if check_collision(new_head, snake):
print(f"Игра окончена! Ваш счет: {score}")
running = False
break
# Добавление новой головы змейки
snake.insert(0, new_head)
# Проверка на съедение еды
if new_head == food_position:
score += 1
food_position = (
random.randint(0, (WIDTH // CELL_SIZE) - 1) * CELL_SIZE,
random.randint(0, (HEIGHT // CELL_SIZE) - 1) * CELL_SIZE
)
else:
snake.pop() # Удаление последнего сегмента змейки
# Отрисовка элементов игры
screen.fill(FIELD_COLOR) # Заливка фона
for segment in snake:
pygame.draw.rect(screen, SNAKE_COLOR, pygame.Rect(segment[0], segment[1], CELL_SIZE, CELL_SIZE))
pygame.draw.rect(screen, FOOD_COLOR, pygame.Rect(food_position[0], food_position[1], CELL_SIZE, CELL_SIZE))
draw_score(score)
pygame.display.flip()
clock.tick(FPS) # Установка частоты обновления экрана
# Запуск игры
if __name__ == "__main__":
main()
Как запустить игру?

- Убедитесь, что Python и Pygame установлены.
- Скопируйте код в файл с расширением .py, например, snake_game.py.
- Откройте терминал или командную строку, перейдите в папку с файлом и выполните команду: python snake_game.py или python3 snake_game.py в зависимости от операционной системы и способа установки Python.
- Игра запустится, и вы сможете управлять змейкой с помощью стрелок на клавиатуре.
Поздравляем! Вы создали свою первую игру «Змейка» на Python с помощью библиотеки Pygame. Этот проект объединяет основы работы с библиотеками, управление графикой, событиями и игровой логикой.
В продемонстрированной реализации игры «Змейка» еда с небольшой вероятностью, но может отображаться поверх змейки, попробуйте это исправить с помощью дополнительной проверки.
Если захотите улучшить игру, добавьте:
- уровни сложности (увеличивающуюся скорость);
- таблицу рекордов;
- препятствия или бонусные элементы.
Статья написана при участии эксперта — Никиты Четверикова, разработчика РБК Pro