Змейка на питоне, Игра «Змейка» на Python c использованием модуля Pygame
Исправляем это с помощью кода: добавляем событие QUIT , закрывающее окно. Теперь игровое окно не закрывается само по себе. Первый человек с чипом Neuralink научился играть силой мысли в компьютерные игры 26 мар
Кстати, есть полезная книга Impractical Python Projects , которую вы можете у нас скачать. В ней сборник проектов и примеров с модулем pygame. Перед тем как создать змейку, мы инициируем несколько цветовых переменных для раскрашивания самой змейки, еды и экрана.
Установка всех цветов в 0 соответствует черному цвету, а в — соответственно, белому. Фактически, наша змейка является прямоугольником. Чтобы нарисовать прямоугольник в Pygame, можно воспользоваться функцией draw.
Как можно увидеть, змейка создана в виде голубого прямоугольника. Теперь нам нужно научить ее двигаться. Также, цвет дисплея меняется от черного по умолчанию до белого при помощи метода fill. В игре змейка игрок проигрывает, если касается границы экрана. Чтобы задать такое поведение, мы должны использовать инструкцию if , которая будет следить за тем, чтобы координаты x и y были меньше размеров экрана. Мы будем использовать для этого переменные, чтобы вы могли потом, при случае, легко внести какие-либо изменения в игру.
Теперь мы добавим немного еды для змейки, и когда она будет ее пересекать, мы будем выводить сообщение «Yummy!! Помимо этого, мы внесем небольшие изменения, которые дадут возможность игроку прекращать игру, а также начинать ее заново в случае поражения.
Следующий код будет увеличивать длину змейки после поглощения ею еды. Длина змейки хранится в списке, а базовые значения заданы в следующем коде. И последнее, но весьма важное дело: вам нужно отображать счет игрока. Это функция будет показывать размер змейки за вычетом 1 так как это начальный размер змейки. Вот мы и дошли до конца нашей статьи. Мы надеемся, что она вам понравилась и все было понятно.
Самое главное, не забывайте как можно больше практиковаться и использовать ваши знания на практике. Check your inbox. Перейти к содержимому. Главная страница » Модули » Змейка на Python. Хотите скачать книги по Python в 2 клика? Тогда вам в наш телеграм канал PythonBooks Перед тем как двигаться дальше, давайте посмотрим на основные разделы нашей статьи: Установка Pygame. Создание экрана. Создание змейки. Движение змейки. Добавление еды.
Увеличение длины змейки. Вывод счета на экран. Установка Pygame Первое, что нам надо сделать, это установить библиотеку Pygame. Перед тем как начинать писать код, надо определиться с дизайном нашей «Змейки». Сейчас есть огромное количество вариантов этой классической игры, но мы повторим тот, который был популярен на заре зарождения жанра.
Экраны тогда были монохромными, и разработчики не могли использовать обилие цветов. Мы тоже возьмем ограниченную палитру в зеленых оттенках, которая хорошо знакома по игровой консоли Game Boy от Nintendo.
Всего в проекте будем использовать четыре цвета. Их коды в форматах RGB и Hex указаны на изображении. В этом проекте мы разработаем классическую версию «Змейки», поэтому надо сразу обозначить правила игры:. Управление реализуем с помощью клавиш WASD. Такая схема управления уже успела стать стандартом в разработке игр, поэтому пользователям не надо будет привыкать к специфическим кнопкам.
Весь процесс разработки игры разобьем на шаги, чтобы было легче погружаться в Pygame и удобнее отслеживать процесс появления новых функций.
Как выглядит готовый код игры на Python, можно посмотреть в конце статьи. Для начал необходимо создать новый проект в редакторе кода. Будем рассматривать все на примере PyCharm, но все операции в таком же порядке можно проделать и в VS Code. В открывшемся меню указываем имя проекта и задаем директорию хранения файлов. В нашем случае проект называется snake, а все файлы хранятся в стандартной папке.
Остальные пункты меню можно оставить по умолчанию. В созданном проекте переходим к файлу main. В самом начале файла импортируем все необходимые для работы библиотеки:.
Некоторые переменные будут постоянными во всем проекте — константами. К ним будут относиться размер окна в пикселях и частота кадров frame per second, FPS. Зададим их сразу после импорта библиотек. Важно отметить, что среди разработчиков Python константы принято писать заглавными буквами, а если в названии содержится больше одного слова, то отделять их следует символом нижнего подчеркивания.
Теперь можно проинициализировать объекты игры. Последние два аргумента можно опустить и задать позже. Также сразу же инициализируем объект, который поможет нам задать частоту обновления экрана. Мы сделали все необходимое для того, чтобы нарисовать на экране компьютера окно нашей «Змейки».
Перед этим важно отметить, что игры на Pygame работают в рамках бесконечного цикла, который существует до тех пор, пока пользователь его не закроет. В этом цикле находятся уже другие циклы и условия, предназначенные для реализации управления, обновления экрана и отрисовки объектов. Создадим такой цикл while True , сразу же в нем установим ограничение частоты кадров, использовав константу FPS :.
Теперь мы хотим получать события и обрабатывать их. Создадим для этого цикл for. В нем будем отслеживать действия пользователя и реагировать на них. Сразу же пропишем обнаружение закрытия окна с помощью условия if event. QUIT — если объект Pygame закрывается, то мы закрываем игровое окно.
После этого воспользуемся функцией fill и закрасим ранее созданный экран самым светлым цветом из палитры. Это позволит поверх разместить более темную змейку и объекты, которые она будет собирать. Цвет укажем в RGB-формате. В конце добавим функцию обновления экрана flip. Окно создано, для него установлен цвет, и выставлены параметры обновления экрана.
Теперь можно запустить код. После запуска на экране появится наше окно. Его можно закрыть с помощью нажатия на крестик или горячих клавиш операционной системы. Наша змейка должна как-то передвигаться по игровому полю, для этого ей понадобятся координаты.
Так мы сможем задавать змейке координаты для передвижения и спауна объектов. Теперь создадим функцию, которая определяет координаты случайной плитки на игровом поле. Вспомним из школы, что координаты на плоскости задаются с помощью двух значений — по оси X и Y. Поэтому наша функция должна находить два таких значения, основываясь на данных о разметке поля.
Мы не знаем, сколько их там хранится, можем заранее посчитать и сохранить количество в отдельную переменную, а можем просто воспользоваться префиксной записью перед константой и доверить это дело Python. Вызовем функцию и посмотрим на вывод:. Теперь у нас есть все необходимое для того, чтобы задать параметры змейки и нарисовать ее на экране.
Для начала создадим переменную snake, в которой определим голову змеи с помощью экземпляра класса Rect , который в Pygame отвечает за обозначение прямоугольных областей.
В качестве параметров в конструктор класса следует передать координаты X и Y, высоту и ширину.
Теперь нам надо создать переменные для хранения длины змеи и всех ее сегментов. Для этого создадим переменную length со значением 1 и список segments , в который поместим первый сегмент. Перейдем в цикл обработки событий и отобразим змейку на экране.
В качестве цвета возьмем второй зеленый оттенок из определенной ранее палитры. Зададим его в RGB-формате. Теперь при каждом запуске кода на игровом поле будет появляться голова змейки. Также можно заметить, что каждый раз змейка появляется в случайном месте.
Для управления змейкой реализуем классическую для игр схему WASD. Такая раскладка для перемещения персонажем успела стать стандартной, поэтому пользователю будет привычно играть в нашу «Змейку». Клавиши WASD обозначают:. В ней будем хранить координаты головы змеи. Зададим значение 0, 0. Теперь необходимо описать в коде обработку нажатий клавиш.
В коде игры уже есть обработка нажатий клавиш, поэтому можно реализовать логику управления. На каждом шаге змейки мы будем перемещать ее на один сегмент игрового поля и убирать из списка сегментов лишний:. Сейчас можно запустить код и попробовать поуправлять змейкой.
Важно отметить, что в Pygame есть неприятная особенность. Если задать в коде управление на латинской раскладке, то библиотека будет обрабатывать только нажатие латинских клавиш.
Поэтому необходимо переключить язык на английский. Исправить это можно с помощью добавления кода для обработки клавиш в Unicode, но в этом проекте мы просто будем следить за раскладкой. Также можно заметить, что змейка передвигается по игровому полю слишком быстро. Исправим это, добавив код для контроля скорости.
Сперва перейдем в раздел параметров переменной и создадим переменные времени и задержки между шагами змейки:. У нас уже есть змейка, и мы даже можем ей управлять. Теперь на игровом поле должны появляться объекты еды, которые змейка будет собирать и увеличиваться.