Python (Питон) – это высокоуровневый язык программирования общего назначения. Он обладает строгой типизацией и автоматическим управлением памятью. Широко используется современными программистами для написания самых разных приложений и утилит – от драйверов и систем до игр.
Этот язык разработки обладает понятным синтаксисом, который напоминает английский. Исходный код приложения получается читабельным. Для этого языка поддерживаются различные библиотеки и фреймворки, а также иные инструменты. Они предназначаются для более быстрого программирования.
Далее предстоит разобраться с тем, как делать игры на Python. Необходимо выяснить, что должен знать разработчик, составить небольшой предварительный план действий, а также изучить инструменты, помогающие писать на Питоне. В качестве наглядного примера будет приведена игра «Змейка». Она является элементарным примером для начинающих программистов. Требует минимум усилий и предварительной подготовки.
Как писать игры – краткий план действий
Программирование игр, согласно Google – перспективное направление разработки. Это касается не только Python, но и других языков. Готовый проект, если он хорошо продуман и грамотно реализован, может принести неплохую прибыль.
Для того, чтобы писать игры, рекомендуется придерживаться следующего плана:
- Выбрать язык для дальнейшего изучения. На данный момент – это Python.
- Выучить основы Питона. Их будет достаточно для того, чтобы написать первую простую игру.
- Придумать сюжет и определить жанр. На этом этапе желательно проанализировать потребности целевой аудитории.
- Разработать дизайн, физику, анимацию.
- Написать программный код.
- Соединить все элементы игры в единый проект.
- Протестировать получившийся продукт. По мере необходимости – организовать его отладку и повторное тестирование.
- Выложить готовый релиз в общий доступ.
Сначала может показаться, что программирование игр – легкая задача. Это не так. В Google полно информации о том, как создавать развлекательный контент. Каждый проект, особенно если он пишется «с нуля», требует детальной проработки и качественного тестирования. На создание дизайна, физики, анимации и исходного кода у команды может уйти немало времени и сил.
Разработка через движки
Код игры, согласно данным из Google, можно создавать различными способами. Предыдущий алгоритм актуален для разработки «с нуля». Такой вариант позволяет получать уникальные проекты на выходе.
Есть еще один вариант программирования развлекательного контента – через специальные программы. Они называются движками. Многие современные движки поддерживают работу с Python.
Разработка через движки – более быстрый вариант создания первого проекта. В них уже имеются некоторые фоны, фигуры, а также иные элементы для будущего приложения. В движках, согласно Google, задана физика, механика и другие параметры. Все, что нужно будет разработчику – подставить свои объекты на экране, добавить изменения в настройки и параметры на экране, а затем сформировать готовый проект.
Для программирования на Python рекомендуется использовать Unreal Engine, Unity, Godot. В Google о них полно информации и видео-уроков.
Библиотека PyGame
Программирование игр на Python может производиться несколькими способами. Один из наиболее эффективных – разработка «с нуля». Далее будет рассмотрен именно такой подход. Он хорошо реализуется при помощи библиотеки Питона. Она называется PyGame.
Py Game – известная Питон-библиотека, которая предназначена для создания игр под самые разные устройства:
- Linux;
- Windows;
- MacOS;
- Android.
С ее помощью получается не просто описать геймплей, а еще и работать с мышью, звуком, видео и другим подключаемым оборудованием.
Первая версия Py Game была создана Питом Шиннерсом еще в октябре 2000-го года. С тех пор библиотека активно разрабатывалась и обновлялась. Сейчас у нее большое сообщество, а по работе с этим инструментом, согласно данным Google, написано несколько десятков книг. В Сети полно видеообзоров и уроков по осваиванию библиотеки. Актуальная версия – 2.1.2.
Инициализация
Google указывает на то, что Pygame – это не самостоятельная библиотека. Она представляет собой обертку для библиотеки SDL (Simple DirectMedia Player). Именно с ее помощью удается использовать любые внешние устройства. Примеры – клавиатура и мышь, геймпад или джойстик. Py Games делает работу с ними удобной непосредственно для разработчика.
Установка инструмента простая – она осуществляется через терминал. Достаточно открыть его (или командную строку) и воспользоваться pip:
Pip install Pygame
Если в процессе установки возникают ошибки и сбои, можно воспользоваться официальной документацией. В ней описаны особенности инициализации на различных операционных системах, а также наиболее распространенные неполадки и способы их решения.
Модули
Google указывает на то, что PyGame включает в себя несколько готовых модулей. Модули дают возможность получить доступ к определенному устройству. Они включают в себя методы для работы с оборудованием. Пример – модуль display. Он предназначается для работы с экраном. Если использовать модуль joystick – происходит считывание движения джойстика.
После импорта библиотеки нужно инициировать ее через команду pygame.int(). Этот прием позволит применять любые методы любых функций, включенных в библиотеку модулей. Без инициализации проект может утратить свою кроссплатформенность.
Игровое поле
Написание игрового контента для начинающих через Питон – не самая сложная задача, если начинать с небольших проектов. PyGame включает в себя несколько Python-классов, которые умеют работать с концепциями, не зависящими от аппаратных устройств. Сюда можно отнести:
- surface;
- display.
Surface отвечает за определение прямоугольной области, на которой допускается дальнейшее рисование. Если перенести соответствующее явление на практику, то этот класс используется для формирования игрового поля. Он широко используется в Pygame. В создаваемом далее проекте Surface будет тоже применен.
Для вывода информации на игровом поле используется класс display. Игровое поле может быть полноэкранным или оконным. Display создается при помощи функции .set_mode(), которая будет возвращать Surface, представленной видимой частью окна. Именно она передается в функции рисования – pygame.draw.circle. Содержимое соответствующего Surface выводится на экран при помощи обращения к команде pygame.display.flip().
Изображения
Для работы с изображениями можно выбрать один из нескольких вариантов: создавать их с нуля прямо на экране или использовать готовые картинки с жесткого диска. Оба варианта поддерживают:
- перезапись;
- загрузку;
- сохранение в различных форматах.
Изображения – это не самостоятельные элементы. Они должны быть загружены в Surface-объекты, которые допускают корректирование и вывод на дисплей различными методами.
Прямоугольники чаще всего используются в Surface. Для них, согласно Google, существует отдельный класс – Rect. Такие объекты применяются для самых разных задач – создания фигур персонажей, управления взаимодействиями и так далее.
Создание «Змейки»
Создание игры на языке Python может отнять много времени и сил. Поэтому далее будет более подробно разобран наглядный пример разработки «Змейки». С соответствующей игрушкой знакомы как ПК-пользователи, так и любители консолей.
Правила игры
Перед непосредственным программированием необходимо продумать общую концепцию итогового продукта. А именно – правила. Для «Змейки» они являются базовыми. Все эти принципы оказывают определенное влияние на геймплей:
- целью игры является набор как можно большего очков за счет увеличения длины змейки на экране;
- если змейка «съедает» специальный объект на экране, ее длина увеличивается на один блок;
- начало игры – в левой стороне поля;
- пользователю разрешено двигаться во все стороны, но не по диагонали;
- нельзя двигаться за пределы экрана;
- при столкновении змейки с границами игрового поля раунд заканчивается;
- раунд прекращается, если змейка врезается сама в себя.
Также раунд прекращается, если пользователь самостоятельно закроет игровое окно. Google называет все эти правила базовыми. Они легко запоминаются и присутствуют почти в каждой вариации «Змейки» для тех или иных устройств. В некоторых сборках можно «проходить сквозь стены», но это уже более сложный случай.
Запуск Python
Теперь предстоит рассмотреть разработку развлекательного программного обеспечения на Питоне более подробно. Писать код рекомендуется в специальном редакторе. Здесь предлагаются следующие варианты:
- Использование специализированных IDE: Visual Studio Code или IntelliJ IDEA. Этот вариант Google называет самым эффективным и удобным. В IDE есть дополнительные инструменты, способствующие более быстрой разработке. Пример – подсветка синтаксиса. Многие программисты предпочитают пользоваться Visual Studio Code.
- Использование терминала на Linux или MacOS. В качестве альтернативного решения подойдет командная строка Windows. Для этого нужно предварительно установить Python в операционную систему.
Как только язык программирования будет загружен в ОС, можно загрузить саму библиотеку Pygame:
Для дальнейшего труда над проектом все готово. Можно создавать пустой Python-файл и приступить к разработке с нуля.
Создание поля
Для создания игрового поля при помощи изучаемой библиотеки необходимо воспользоваться специальной функцией – display.set.mode(). В нее передается желаемый размер окна. Единицы измерения – в пикселях. Также нужно использовать методы init и quit для установки библиотеки в начале кода и ее деинициализации в конце.
При помощи метода update удается обновлять содержимое экрана. Есть метод flip, который работает точно также, как и update. Разница заключается только в том, что update обновляет только что внесенные изменения, а flip будет перерисовывать экран целиком. Если в update не передавать никаких параметров, произойдет полное обновление дисплея.
При запуске указанного кода экран запустится и тут же закроется. Это связано с тем, что управление передается pygame.quit. Она используется для отключения библиотеки и поля. Для устранения соответствующего явления нужно использовать цикл while. Он не позволит игровому окну тут же закрываться:
Здесь добавлены две сущности:
- название игры;
- функция отслеживания игровых событий.
Чтобы у игрового поля появилось название, нужно задействовать .set_caption(«»), где в кавычках указывается «имя» окна. Функция event.get вернет в терминал все события, происходящие на поле.
А вот – код, который появится после создания кнопки «Выход».
Создание змеи
В качестве змейки используется прямоугольник. Он создается при помощи функции draw.rect(). В ней можно задать размер и цвет прямоугольников:
Python использует в своей работе стандартную RGB-схему. Это значит, что любой цвет на экране представляет собой комбинации из красного, зеленого и синего цветов. Интенсивность этих компонентов может меняться для получения того или иного результата.
Описание движений
Для управления перемещениями можно использовать специальный класс Pygame – keydown. Он дает возможность использовать 4 стандартных события с клавиатуры:
- k_up;
- k_down;
- k_left;
- k_right.
Они будут соответствовать движению змейки вверх, вниз, влево и вправо соответственно.
Срабатывание любого события из класса keydown приводит к изменению положения змейки. Пусть шагом движения будут 10 пикселей:
Здесь требуется создать две переменные – x1_change и y1_change. Они используются для хранения значений координат первой клетки змейки по осям x и y.
Препятствия
Если змейка попадает в Python Games на границу экрана, пользователь проигрывает. Раунд заканчивается. Это правило может быть реализовано через if-оператор. Он определит координаты x и y для змейки и проанализирует их – происходит ли выход за границы заданного поля или нет:
Теперь, если змейка попадет на границу поля, раунд завершится, а пользователь увидит сообщение «Вы проиграли».
Еда
Для добавления «еды» на поле нужно использовать библиотеку random. Она отвечает за случайное появление «корма» в пределах игрового окна. Когда змейка проходит через еду, ее длина увеличивается. Эта операция будет добавлена позже. Сначала нужно обеспечить случайное появление «корма» для змейки:
Еда отобразится на экране черным квадратом. Если выполнить условие завершения игры, на экране появится характерное сообщение с предложением выхода или перезапуска партии.
Увеличение длины
Теперь можно дополнить код, чтобы длина змейки после поедания корма увеличивалась. Для этого используется список. В нем будет сохраняться текущая длина змейки. Во внимание должно приниматься еще одно правило – при столкновении головы с телом игра заканчивается:
Здесь также изменены цвета игрового поля и змейки за счет увеличения их контрастности. Так проект будет выглядеть более привлекательно и эффектно.
Счет
Чтобы было интереснее играть, в «Змейке» должен вестись счет. Для этого используется функция Your_score, которая создается разработчиком. Она отображает длину змейки, вычитая из нее 1 (ведь 1 – это первоначальный размер объекта на поле, он не является достижением).
Отдельно необходимо записать правило, помогающее определить длину змейки. Это та самая операция с вычетом единицы:
Теперь на экране появится надпись со счетом. Она обновляется каждый раз, когда пользователь «съедает» очередную порцию еды на экране.
Лучше разобраться с программированием игр на Питоне и других языках с нуля помогут дистанционные компьютерные курсы. Пример – от OTUS. Они позволяют в комфортном режиме освоить любой язык разработки «с нуля». Python – не исключение. В процессе обучения пользователям предстоит столкнуться с интересными домашними заданиями и множеством практики. В конце выдается электронный сертификат, подтверждающий приобретенные знания и умения.
Интересует Python? Добро пожаловать на курс в Otus!