- Создание 2D платформера на Python
- Настройка проекта
- Создание шаблона Pygame
- Раздел рендеринга (отрисовки)
- Раздел ввода (событий)
- Знакомство с Pygame
- Что такое Pygame?
- Установка Pygame
- Архитектура игры
- Структура папок и файлов
- Класс GameObject
- Класс Game
- Заключение
- Архитектура игры
- Структура папок и файлов
- Класс GameObject
- Класс Game
- класс Window
- Спрайты
- Списки спрайтов
Прежде чем приступить к кодированию и обсуждению деталей, необходимо получить компилятор. Зайдите на сайт python.org, единственный официальный языковой сайт. Загружая, пользователи никогда не будут устанавливать на свои компьютеры вирусы или дополнения.
Создание 2D платформера на Python
Для многих Python — это язык для создания веб-проектов, машинного обучения или анализа данных. На самом деле, он более функционален, и эта статья докажет вам это.
Для реализации игр на Python вы можете выбрать одну из множества библиотек. Вы можете использовать Kivy, Tkinter, PyQt или любую другую библиотеку, которая предоставляет графический интерфейс через Python. Существует множество таких библиотек, но мы сосредоточимся на библиотеке PyGame, даже ее название говорит о том, что она собой представляет.
PyGame впервые появился в 2000 году. С тех пор на его основе было создано множество интересных проектов. К сожалению, PyGame не является универсальным и был разработан только для устройств Android.
Настройка проекта
Прежде чем использовать PyGame, его необходимо установить из терминала. Напишите следующие команды
Для создания главного игрового окна достаточно войти в библиотеку, инициализировать главный объект, указать размер и имя окна и создать главный цикл, который должен вызываться постоянно, чтобы задача выполнялась и работала непрерывно. .
Здесь вы также добавляете мониторинг действий пользователя. Когда окно закроется, остановите программу.
Вы также можете посмотреть подробное видео о разработке 2D платформера на Python+PyGame.
На нашем сайте также есть подробный учебник по изучению языка Python. В рамках огромной программы вы изучите не только язык Python, но и научитесь создавать веб-страницы с помощью веб-технологий и фреймворка Django. Вы узнаете много нового и в конце курса сможете работать с языком Python, создать полноценное компьютерное приложение на основе библиотеки Kivy и создать веб-сайт на основе библиотеки Django.
Другие интересные новости.
Как стать разработчиком-фрилансером: как создавать собственные игры?
Что такое планирование? Как это связано с нашей жизнью?
10 лучших Django сайтов
5 новых языков программирования
Введите ‘pipinstallpygame’ для установки блока. Если вам понадобится что-то еще, следуйте инструкциям в разделе «Начало работы» в Project Wiki. Если вы, как и я, используете macOS Sierra, у вас могут возникнуть проблемы. Я могу установить Pygame без проблем, и код работает нормально, но окно игры не появляется.
Создание шаблона Pygame
Теперь, когда вы знаете, о чем будет игра, вы можете начать писать код. Сначала нужно создать простую программу pygame, которая открывает окно и запускает цикл игры. Это отправная точка для вашего проекта pygame.
В начале программы вы вводите необходимые библиотеки и определяете основные переменные игры.
Далее необходимо открыть окно игры.
pygame.init () — это команда для запуска pygame. screen — это окно программы, которое создается при задании размера в конфигурации. Далее необходимо создать часы, чтобы убедиться, что игра работает с заданной частотой кадров.
Далее необходимо создать игровой цикл.
Игровой цикл — это цикл while, управляемый переменной выполнения. Если вы хотите, чтобы игра закончилась, вам нужно изменить выполнение на False. Это приведет к завершению цикла. Теперь вы можете ввести основной код в каждом разделе.
Раздел рендеринга (отрисовки)
Начните с раздела производительности. Поскольку текста еще нет, экран будет заполнен монохромными цветами. Для этого необходимо понять, как компьютер обрабатывает цвет.
Экран компьютера состоит из пикселей, каждый из которых содержит три элемента: красный, зеленый и синий. Цвет пикселя определяется тем, как освещен каждый элемент.
Каждый из трех основных цветов может иметь значение 0 (выключен) с максимальным значением 255 (активирован на 100%), поэтому для каждого элемента существует 256 вариантов.
Умножив на следующее значение, вы можете рассчитать общее количество цветов, отображаемых компьютером.
Теперь, когда вы знаете, как работают цвета, вы можете установить их в начале программы.
Затем вы можете заполнить весь экран.
Однако этого недостаточно. Экраны компьютеров работают не так. Когда вы изменяете пиксель, он посылает команду на графическую карту, которая затем посылает соответствующую команду на экран. На компьютере это очень медленный процесс. Если вам нужно создать много объектов на экране, это может занять много времени. Существует хитрый способ исправить это, называемый двойным разделением. Звучит необычно, но суть заключается в следующем.
Представьте, что у вас есть двухсторонний стол, который может поворачиваться в одну сторону и показывать то одну, то другую сторону. Одна сторона — это экран (то, что видит игрок), а другая сторона остается скрытой и может быть «просмотрена» только компьютером. С каждым кадром спектакль все дальше и дальше уходит за стол. По завершении представления таблица поворачивается, и ее содержимое показывается игроку.
Это означает, что процесс повышения эффективности выполняется один раз за кадр, а не при добавлении каждого элемента.
В Pygame это происходит автоматически. Все, что вам нужно сделать, это указать таблице, что она должна появиться по завершении рисования. Эта команда называется flip ().
Главное — убедиться, что перевертыш () находится в конце. Если вы попытаетесь нарисовать что-то после переворота, содержимое не появится на экране.
Раздел ввода (событий)
Трудно сказать, какие кнопки или другие элементы управления необходимы, поскольку игры еще нет. Однако есть важные события, которые необходимо организовать. Теперь попробуйте запустить программу, и вы увидите, что нет возможности закрыть окно. Недостаточно нажать на крестик в верхнем углу. Это также является событием, которое вы должны считать в программное обеспечение и дать ему указание закрыть игру соответствующим образом.
События происходят постоянно. Что произойдет, если игрок нажмет кнопку прыжка во время выступления? Это нельзя игнорировать. В противном случае игрок будет разочарован. Для этого Pygame сохраняет все события, произошедшие с момента последнего кадра. Даже если игрок отскочит от кнопки, он не пропустит ни одной из них. Создается список, и все они могут быть использованы с помощью цикла fork.
Pygame имеет множество событий, на которые он может реагировать. pygame.quit — это событие, которое запускается после нажатия на перекрестие и выполняется, и завершает игру, передавая неверное значение переменной run.
Этот код создаст спрайт, используя изображение, хранящееся в coin_01.png. Изображение будет уменьшено до 20% от его первоначальной высоты и ширины.
Знакомство с Pygame
Прежде чем приступить к игре, узнайте несколько вещей о Pygame. Это возьмет на себя большую часть работы.
Что такое Pygame?
Pygame — это основа языка Python для программирования игр. Он построен на SDL и имеет все необходимое.
- зрелостью
- хорошим сообществом
- открытым исходным кодом
- кроссплатформенностью
- качественной документацией
- множеством примеров игр
- простотой изучения
Установка Pygame
Введите ‘pipinstallpygame’ для установки блока. Если вам понадобится что-то еще, следуйте инструкциям в разделе «Начало работы» в Project Wiki. Если вы, как и я, используете macOS Sierra, у вас могут возникнуть проблемы. Я могу установить Pygame без проблем, и код работает нормально, но окно игры не появляется.
Это создает серьезное препятствие при запуске игры. Он должен быть запущен на Windows в виртуальной машине VirtualBox. Надеюсь, к тому времени, когда вы будете читать эту статью, проблема будет решена.
Архитектура игры
Игры должны управлять большим количеством информации и выполнять практически одинаковые функции на многих объектах. Breakout — небольшая игра, но попытка управлять всем в файле может быть очень утомительной. Поэтому мы решили создать файловую структуру и архитектуру, которая подходит и для гораздо более крупных игр.
Структура папок и файлов
Pipfile и Pipfile.Lock — это современные способы управления Python. Папка image содержит изображения, используемые в игре (в версиях только фоновые изображения); папка Sound_effects содержит короткие звуковые клипы, используемые в качестве звуковых эффектов (можете догадаться); и Pipfile.
В файлах ball.py, paddle.py и brick.py содержится код для каждого из этих элементов. Изучите их более подробно в следующих частях семинара. Файл text_object.py содержит код для отображения текста на экране, а файл background.py содержит логику игры на выбывание.
Однако есть несколько разделов, которые создают произвольные «скелеты» для общих целей. Определенные в них классы могут быть использованы в других играх на базе PYGAME.
Класс GameObject
GameObjects — это визуальные объекты, которые визуализируют себя, хранят ограничения и умеют двигаться. В Pygame также есть класс sprite, который играет похожую роль, но на этом семинаре мы хотим показать, как все работает, а не полагаться на готовую магию. Вот как выглядит класс GameObject.
GameObject разработан как базовый класс для других объектов. Он напрямую раскрывает многие свойства своего прямоугольного «я», а функция Update () перемещает объект в соответствии с его текущей скоростью. Метод Draw () ничего не делает. Он должен быть обойден подклассом.
Класс Game
Класс Game является ядром игры. Он запускается в главном цикле. Он имеет множество полезных функций. Давайте проанализируем методы.
Метод __init __() запускает сам Pygame, систему шрифтов и звуковой микшер. Поскольку каждый Pygame не использует все компоненты, требуется три разных вызова для управления тем, какие подсистемы используются, и только соответствующие параметры могут быть инициализированы. Этот метод создает фоновое изображение, основную поверхность (со всем нарисованным) и правый фрейм игрового таймера.
Элемент self.objects хранит все объекты игры, которые отрисовываются и обновляются. Различные операторы ведут список функций обработки, которые должны быть выполнены для определенных событий.
Методы update() и draw() очень просты. Они обходят все управляемые объекты воспроизведения и вызывают соответствующий метод. Если два объекта накладываются друг на друга на экране, порядок списка объектов определяет, какой из них изображен первым, остальные частично или полностью перекрывают его.
Метод handle_events () прослушивает события, создаваемые pygame, такие как события клавиш и мыши. Для каждого события он приглашает все функции обработки, которые должны обрабатывать каждый тип события.
Наконец, метод run () выполняет главный цикл. Он выполняется до тех пор, пока элемент Game_over не станет истинным. Каждая итерация отображает фоновое изображение и поочередно вызывает handle_events (), update () и draw ().
Заключение
В этом месте вы изучили основы программирования игр и все элементы, участвующие в создании игры. Мы также изучили сам Pygame и узнали, как его установить. Наконец, мы разобрали архитектуру игры и рассмотрели структуру папок, GameObject и игровые классы.
Во второй части мы рассмотрим класс TextObject, который используется для выполнения текста на экране. Вы создадите главное окно с фоновым изображением и научитесь изображать объекты (мяч и ракетку).
Каждый цвет имеет значение от 0 до 256, где 0 — выключено, а 255 — максимально. Таким образом, три основных цвета можно регулировать для достижения желаемого цвета. Именно поэтому цветовая панель называется RGB, пропорционально трем основным цветам в верхней части.
Архитектура игры
Игры должны управлять большим количеством информации и выполнять практически одинаковые функции на многих объектах. Breakout — небольшая игра, но попытка управлять всем в файле может быть очень утомительной. Поэтому мы решили создать файловую структуру и архитектуру, которая подходит и для гораздо более крупных игр.
Структура папок и файлов
Pipfile и Pipfile.Lock — это современные способы управления Python. Папка image содержит изображения, используемые в игре (в версиях только фоновые изображения); папка Sound_effects содержит короткие звуковые клипы, используемые в качестве звуковых эффектов (можете догадаться); и Pipfile.
В файлах ball.py, paddle.py и brick.py содержится код для каждого из этих элементов. Изучите их более подробно в следующих частях семинара. Файл text_object.py содержит код для отображения текста на экране, а файл background.py содержит логику игры на выбывание.
Однако есть несколько разделов, которые создают произвольные «скелеты» для общих целей. Определенные в них классы могут быть использованы в других играх на базе PYGAME.
Класс GameObject
GameObjects — это визуальные объекты, которые визуализируют себя, хранят ограничения и умеют двигаться. В Pygame также есть класс sprite, который играет похожую роль, но на этом семинаре мы хотим показать, как все работает, а не полагаться на готовую магию. Вот как выглядит класс GameObject.
GameObject разработан как базовый класс для других объектов. Он напрямую раскрывает многие свойства своего прямоугольного «я», а функция Update () перемещает объект в соответствии с его текущей скоростью. Метод Draw () ничего не делает. Он должен быть обойден подклассом.
Класс Game
Класс Game является ядром игры. Он запускается в главном цикле. Он имеет множество полезных функций. Давайте проанализируем методы.
Метод __init __() запускает сам Pygame, систему шрифтов и звуковой микшер. Поскольку каждый Pygame не использует все компоненты, требуется три разных вызова для управления тем, какие подсистемы используются, и только соответствующие параметры могут быть инициализированы. Этот метод создает фоновое изображение, основную поверхность (со всем нарисованным) и правый фрейм игрового таймера.
Элемент self.objects хранит все объекты игры, которые отрисовываются и обновляются. Различные операторы ведут список функций обработки, которые должны быть выполнены для определенных событий.
Методы update() и draw() очень просты. Они обходят все управляемые объекты воспроизведения и вызывают соответствующий метод. Если два объекта накладываются друг на друга на экране, порядок списка объектов определяет, какой из них изображен первым, остальные частично или полностью перекрывают его.
Метод handle_events () прослушивает события, создаваемые pygame, такие как события клавиш и мыши. Для каждого события он приглашает все функции обработки, которые должны обрабатывать каждый тип события.
Наконец, метод run () выполняет главный цикл. Он выполняется, если элемент game_overn не установлен в true. Каждая итерация отображает фоновое изображение и поочередно вызывает handle_events (), update () и draw ().
В основе каждой игры лежит ее состояние. Это все, что смотрят и рисуют на экране. В случае с брейками состояние включает в себя положение всех кирпичей, положение и скорость мяча, положение ракетки, жизнь и очки.
класс Window
Обычно более крупные программы наследуют от класса окна или используют декораторы. Это позволяет разработчикам создавать код, который обрабатывает дизайн, обновление и обработку пользовательских входов. Ниже перечислены стандарты запуска оконных программ.
Существует несколько способов, с помощью которых оконные классы могут заменить программы для обеспечения функциональности программы. Некоторые из наиболее часто используемых
on_draw: весь код для оформления экрана можно найти здесь. Обновление: весь код для перемещения объектов и выполнения логики игры находится здесь. Это происходит примерно 60 раз в секунду. on_key_press: обработка события при нажатии клавиши, например, скорости игрока. on_key_release: обрабатывает, когда клавиша оставлена. Здесь движение игрока может быть остановлено. on_mouse_motion: вызывается всякий раз, когда мышь перемещается. on_mouse_press: вызывается каждый раз при нажатии кнопки мыши. set_viewport: эта функция используется в прокатных играх, когда ваш мир намного больше, чем можно увидеть на одном экране. Вызов set_viewport позволяет разработчику указать, как выглядит часть мира в данный момент.
Спрайты
Спрайты — это простой способ создания двухмерных объектов PIXMAP в аркадах. Аркада предлагает способ облегчить дизайн, движение и анимацию. Спрайты также можно использовать для обнаружения конфликтов между объектами.
Создать случай для класса спрайтовой аркады из графики очень просто. Разработчику нужно только имя файла изображения, чтобы полагаться на Sprite, и, по желанию, число масштабирования изображения вверх или вниз. Например:.
Этот код создает спрайт, используя изображение, хранящееся в файле coin_01.png. Изображение уменьшается до 20% от его первоначальной высоты и ширины.
Списки спрайтов
Спрайты обычно организованы в списки. Эти списки облегчают управление спрайтами. Спрайты в списках проектируются с помощью OpenGL для проектирования спрайтов как группы. Следующий код координирует игру с игроком и стопкой монет, собранных игроком. Используются два списка — один для игрока и один для монет.
Все монеты можно легко разложить на монетки.