программирование игр на python что это

Библиотека Pygame / Часть 1. Введение

Это первая часть серии руководств « Разработка игр с помощью Pygame ». Она предназначена для программистов начального и среднего уровней, которые заинтересованы в создании игр и улучшении собственных навыков кодирования на Python.

Что такое Pygame?

Pygame — это «игровая библиотека», набор инструментов, помогающих программистам создавать игры. К ним относятся:

Графика и анимация

Звук (включая музыку)

Управление (мышь, клавиатура, геймпад и так далее)

Игровой цикл

В сердце каждой игры лежит цикл, который принято называть «игровым циклом». Он запускается снова и снова, делая все, чтобы работала игра. Каждый цикл в игре называется кадром.

В каждом кадре происходит масса вещей, но их можно разбить на три категории:

1.Обработка ввода (события)

Речь идет обо всем, что происходит вне игры — тех событиях, на которые она должна реагировать. Это могут быть нажатия клавиш на клавиатуре, клики мышью и так далее.

2.Обновление игры

Изменение всего, что должно измениться в течение одного кадра. Если персонаж в воздухе, гравитация должна потянуть его вниз. Если два объекта встречаются на большой скорости, они должны взорваться.

3.Рендеринг (прорисовка)

В этом шаге все выводится на экран: фоны, персонажи, меню. Все, что игрок должен видеть, появляется на экране в нужном месте.

Время

Еще один важный аспект игрового цикла — скорость его работы. Многие наверняка знакомы с термином FPS, который расшифровывается как Frames Per Second (или кадры в секунду). Он указывает на то, сколько раз цикл должен повториться за одну секунду. Это важно, чтобы игра не была слишком медленной или быстрой. Важно и то, чтобы игра не работала с разной скоростью на разных ПК. Если персонажу необходимо 10 секунд на то, чтобы пересечь экран, эти 10 секунд должны быть неизменными для всех компьютеров.

Создание шаблона Pygame

Теперь, зная из каких элементов состоит игра, можно переходить к процессу написания кода. Начать стоит с создания простейшей программы pygame, которая всего лишь открывает окно и запускает игровой цикл. Это отправная точка для любого проекта pygame.

В начале программы нужно импортировать необходимые библиотеки и задать базовые переменные настроек игры:

Дальше необходимо открыть окно игры:

Теперь необходимо создать игровой цикл:

Раздел рендеринга (отрисовки)

Начнем с раздела отрисовки. Персонажей пока нет, поэтому экран можно заполнить сплошным цветом. Чтобы сделать это, нужно разобраться, как компьютер обрабатывает цвета.

Экраны компьютеров сделаны из пикселей, каждый из которых содержит 3 элемента: красный, зеленый и синий. Цвет пикселя определяется тем, как горит каждый из элементов:

Каждый из трех основных цветов может иметь значение от 0 (выключен) до 255 (включен на 100%), так что для каждого элемента есть 256 вариантов.

Узнать общее количество отображаемых компьютером цветов можно, умножив:

Теперь, зная, как работают цвета, можно задать их в начале программ:

А после этого — заполнить весь экран.

Но этого недостаточно. Дисплей компьютера работает не так. Изменить пиксель — значит передать команду видеокарте, чтобы она передала соответствующую команду экрану. По компьютерным меркам это очень медленный процесс. Если нужно нарисовать на экране много всего, это займет много времени. Исправить это можно оригинальным способом, который называется — двойная буферизация. Звучит необычно, но вот что это такое.

Представьте, что у вас есть двусторонняя доска, которую можно поворачивать, показывая то одну, то вторую сторону. Одна будет дисплеем (то, что видит игрок), а вторая — оставаться скрытой, ее сможет «видеть» только компьютер. С каждым кадром рендеринг будет происходить на задней части доски. Когда отрисовка завершается, доска поворачивается и ее содержимое демонстрируется игроку.

А это значит, что процесс отрисовки происходит один раз за кадр, а не при добавлении каждого элемента.

В pygame это происходит автоматически. Нужно всего лишь сказать доске, чтобы она перевернулась, когда отрисовка завершена. Эта команда называется flip() :

Главное — сделать так, чтобы функция flip() была в конце. Если попытаться отрисовать что-то после поворота, это содержимое не отобразится на экране.

Раздел ввода (событий)

Игры еще нет, поэтому пока сложно сказать, какие кнопки или другие элементы управления понадобятся. Но нужно настроить одно важное событие. Если попытаться запустить программу сейчас, то станет понятно, что нет возможности закрыть окно. Нажать на крестик в верхнем углу недостаточно. Это тоже событие, и необходимо сообщить программе, чтобы она считала его и, соответственно, закрыла игру.

События происходят постоянно. Что, если игрок нажимает кнопку прыжка во время отрисовки? Это нельзя игнорировать, иначе игрок будет разочарован. Для этого pygame сохраняет все события, произошедшие с момента последнего кадра. Даже если игрок будет лупить по кнопкам, вы не пропустите ни одну из них. Создается список, и с помощью цикла for можно пройтись по всем из них.

Контроль FPS

Пока что нечего поместить в раздел Update (обновление), но нужно убедиться, что настройка FPS контролирует скорость игры. Это можно сделать следующим образом:

Команда tick() просит pygame определить, сколько занимает цикл, а затем сделать паузу, чтобы цикл (целый кадр) длился нужно время. Если задать значение FPS 30, это значит, что длина одного кадра — 1/30, то есть 0,03 секунды. Если цикл кода (обновление, рендеринг и прочее) занимает 0,01 секунды, тогда pygame сделает паузу на 0,02 секунды.

Наконец, нужно убедиться, что когда игровой цикл завершается, окно игры закрывается. Для этого нужно поместить функцию pygame.quit() в конце кода. Финальный шаблон pygame будет выглядеть вот так:

В следующем руководстве этот шаблон будет использован как отправная точка для изучения процесса отрисовки объектов на экране и их движения.

Источник

Пишем игру на Python

Прежде чем мы начнём программировать что-то полезное на Python, давайте закодим что-нибудь интересное. Например, свою игру, где нужно не дать шарику упасть, типа Арканоида. Вы, скорее всего, играли в детстве во что-то подобное, поэтому освоиться будет просто.

Логика игры

Есть игровое поле — простой прямоугольник с твёрдыми границами. Когда шарик касается стенки или потолка, он отскакивает в другую сторону. Если он упадёт на пол — вы проиграли. Чтобы этого не случилось, внизу вдоль пола летает платформа, а вы ей управляете с помощью стрелок. Ваша задача — подставлять платформу под шарик как можно дольше. За каждое удачное спасение шарика вы получаете одно очко.

Алгоритм

Чтобы реализовать такую логику игры, нужно предусмотреть такие сценарии поведения:

Хитрость в том, что всё это происходит параллельно и независимо друг от друга. То есть пока шарик летает, мы вполне можем двигать платформу, а можем и оставить её на месте. И когда шарик отскакивает от стен, это тоже не мешает другим объектам двигаться и взаимодействовать между собой.

Получается, что нам нужно определить три класса — платформу, сам шарик и счёт, и определить, как они реагируют на действия друг друга. Поле нам самим определять не нужно — для этого есть уже готовая библиотека. А потом в этих классах мы пропишем методы — они как раз и будут отвечать за поведение наших объектов.

По коням, пишем на Python

Для этого проекта вам потребуется установить и запустить среду Python. Как это сделать — читайте в нашей статье.

Начало программы

Чтобы у нас появилась графика в игре, используем библиотеку Tkinter. Она входит в набор стандартных библиотек Python и позволяет рисовать простейшие объекты — линии, прямоугольники, круги и красить их в разные цвета. Такой простой Paint, только для Python.

Чтобы создать окно, где будет видна графика, используют класс Tk(). Он просто делает окно, но без содержимого. Чтобы появилось содержимое, создают холст — видимую часть окна. Именно на нём мы будем рисовать нашу игру. За холст отвечает класс Canvas(), поэтому нам нужно будет создать свой объект из этого класса и дальше уже работать с этим объектом.

Если мы принудительно не ограничим скорость платформы, то она будет перемещаться мгновенно, ведь компьютер считает очень быстро и моментально передвинет её к другому краю. Поэтому мы будем искусственно ограничивать время движения, а для этого нам понадобится модуль Time — он тоже стандартный.

Последнее, что нам глобально нужно, — задавать случайным образом начальное положение шарика и платформы, чтобы было интереснее играть. За это отвечает модуль Random — он помогает генерировать случайные числа и перемешивать данные.

Запишем всё это в виде кода на Python:

Мы подключили все нужные библиотеки, сделали и настроили игровое поле. Теперь займёмся классами.

Шарик

Сначала проговорим словами, что нам нужно от шарика. Он должен уметь:

Платформа

Сделаем то же самое для платформы — сначала опишем её поведение словами, а потом переведём в код. Итак, вот что должна уметь платформа:

А вот как это будет в виде кода:

Можно было не выделять счёт в отдельный класс и каждый раз обрабатывать вручную. Но здесь реально проще сделать класс, задать нужные методы, чтобы они сами потом разобрались, что и когда делать.

От счёта нам нужно только одно (кроме конструктора) — чтобы он правильно реагировал на касание платформы, увеличивал число очков и выводил их на экран:

У нас всё готово для того, чтобы написать саму игру. Мы уже провели необходимую подготовку всех элементов, и нам остаётся только создать конкретные объекты шарика, платформы и счёта и сказать им, в каком порядке мы будем что делать.

Смысл игры в том, чтобы не уронить шарик. Пока этого не произошло — всё движется, но как только шарик упал — нужно показать сообщение о конце игры и остановить программу.

Посмотрите, как лаконично выглядит код непосредственно самой игры:

Что дальше

На основе этого кода вы можете сделать свою модификацию игры:

Источник

Создаем 2D игру на Python с библиотекой Arcade

Мы продолжаем делится с вами интересными найденными вещами про питончик. Сегодня вот решили разобраться с 2D играми. Это, конечно, немного попроще, чем то, что проходят у нас на курсе «Разработчик Python», но не менее интересно это уж точно.

Python — выдающийся язык для начинающих изучать программирование. Он также идеально подходит тем, кто хочет “просто взять и сделать”, а не тратить кучу времени на шаблонный код. Arcade — библиотека Python для создания 2D игр, с низким порогом вхождения, но очень функциональная в опытных руках. В этом статье я объясню, как начать использовать Python и Arcade для программирования игр.

Я начал разрабатывать на Arcade после преподавания азов библиотеки PyGame студентам. Я очно преподавал PyGames в течение почти 10 лет, а также разработал ProgramArcadeGames.com для обучения онлайн. PyGames отличная, но в какой-то момент я понял, что устал тратить время на оправдание багов, которые никогда не фиксятся.

Меня беспокоило преподавание таких вещей, как событийный цикл, которым уже почти не пользовались. И был целый раздел, в котором я объяснял, почему y-координаты повернуты в противоположном направлении. PyGames обновлялась редко и базировалась на старой библиотеке SDL 1, а не чем-то более современном вроде OpenGL. На светлое будущее я не рассчитывал.

В моих мечтах была простая и мощная библиотека, которая бы использовала новые фичи Python 3, например, декораторы и тайп-хинтинг. Ей оказалась Arcade. Посмотрим, как начать ее использовать.

Установка

Arcade, как и многие другие пакеты, доступна на PyPi, а значит, можно установить Arcade при помощи команды pip (или pipenv). Если Python уже установлен, скорее всего можно просто открыть командную строку Windows и написать:

Для более детализированной инструкции по установке, почитайте документацию по установке Arcade.

Простой рисунок

Вы можете открыть окно и нарисовать простой рисунок всего несколькими строчками кода. В качестве примера, нарисуем смайлик, как на картинке ниже:

Скрипт ниже показывает, как это сделать, используя команды рисования Arcade. Заметьте, что вам не обязательно знать, как использовать классы или определять функции. Программирование с быстрым визуальным фидбеком — хороший старт для тех, кто только учится.

Использование функций

Конечно, писать код в глобальном контексте — не лучший способ. К счастью, использование функций поможет улучшить ваш код. Ниже приведен пример того, как нарисовать елку в заданных координатах (x, y), используя функцию:

Для полного примера, посмотрите рисунок с функциями.

Более опытные программисты знают, что современные программы сначала загружают графическую информацию на видеокарту, а затем просят ее отрисовать batch-файлом. Arcade это поддерживает. Индивидуальная отрисовка 10000 прямоугольников занимает 0.8 секунды. Отрисовка того же количества батником займет менее 0.001 секунды.

Класс Window

Большие программы обычно базируются на классе Window или используют декораторы. Это позволяет программисту писать код, контролирующий отрисовку, обновление и обработку входных данных пользователя. Ниже приведен шаблон для программы с Window-основой.

В классе Window есть несколько методов, которые ваши программы могут переопределять для обеспечения функциональности. Вот список тех, что используются чаще всего:

Спрайты

Спрайты — простой способ создания 2D bitmap объектов в Arcade. В нем есть методы, позволяющие с легкостью рисовать, перемещать и анимировать спрайты. Также можно использовать спрайты для отслеживания коллизий между объектами.

Создание спрайта

Создать инстанс Sprite класса Arcade очень легко. Программисту необходимо только название файла изображения, на котором будет основываться спрайт, и, опционально, число раз для увеличения или уменьшения изображения. Например:

Этот код создает спрайт, используя изображение coin_01.png. Картинка уменьшится до 20% от исходной.

Список спрайтов

Спрайты обычно организуются в списки. Они помогают упростить их управление. Спрайты в списке будут использовать OpenGl для групповой batch-отрисовки. Нижеприведенный код настраивает игру, где есть игрок и множество монет, которые игрок должен собрать. Мы используем два списка — один для игрока и один для монеток.

Мы с легкостью можем отрисовать все монетки в списке монеток:

Отслеживание коллизий спрайтов

Функция check_for_collision_with_list позволяет увидеть, если спрайт наталкивается на другой спрайт из списка. Используем ее, чтобы увидеть все монетки, с которыми пересекается спрайт игрока. Применив простой for- цикл, можно избавиться от монетки в игре и увеличить счет.

С полным примером можно ознакомиться в collect_coins.py.

Игровая физика

Во многих играх есть физика в том или ином виде. Самые простое, например, что top-down игры не позволяют игроку проходить сквозь стены. Платформеры добавляют сложности с гравитацией и движущимися платформами. Некоторые игры используют полноценные физические 2D движки с массами, трением, пружинами и тд.

Top-down игры

Для простых игр с видом сверху программе на Arcade необходим список стен (или чего-то подобного), через которые игрок не сможет проходить. Обычно я называю это wall_list. Затем создается физический движок в установочном коде класса Window:

player_sprite получает вектор движения с двумя атрибутами change_x и change_y. Просто пример использования — перемещение игрока с помощью клавиатуры.

Несмотря на то что этот код задает скорость игрока, он его не перемещает. Метод update в классе Window вызывает physics_engine.update(), что заставит игрока двигаться, но не через стены.

Пример полностью можно посмотреть в sprite_move_walls.py.

Платформеры

Переход к платформеру с видом сбоку достаточно прост. Программисту необходимо переключить физический движок на PhysicsEnginePlatformer и добавить гравитационную константу.

Для добавления тайлов и блоков, из которых будет состоять уровень, можно использовать программу вроде Tiled.

Учитесь на примере

Учиться на примере — один из лучших методов. В библиотеке Arcade есть большой список образцов программ, на которые можно ориентироваться при создании игры. Эти примеры раскрывают концепты игр, о которых спрашивали мои онлайн и оффлайн студенты в течение нескольких лет.

Запускать демки при установленной Arcade совсем не сложно. В начале программы каждого примера есть комментарий с командой, которую нужно ввести в командную строку для запуска этого примера. Например:

Как всегда ждём ваши комментарии и вопросы, которые можно оставить тут или зайти к Стасу на день открытых дверей.

Источник

Pygame и разработка игр

Что такое Pygame

Pygame – это библиотека модулей для языка Python, созданная для разработки 2D игр. Также Pygame могут называть фреймворком. В программировании понятия «библиотека» и «фреймворк» несколько разные. Но когда дело касается классификации конкретного инструмента, не все так однозначно.

В любом случае, фреймворк является более мощным по-сравнению с библиотекой, он накладывает свою специфику на особенности программирования и сферу использования продукта. С точки зрения специфики Pygame – это фреймворк. Однако его сложно назвать «мощным инструментом». По своему объему и функционалу это скорее библиотека.

Также существует понятие «игрового движка» как программной среды для разработки игр. По своему назначению Pygame можно считать игровым движком. В то же время, с точки зрения классификации программного обеспечения, Pygame является API для Питона к API библиотеки SDL.

API – это интерфейс (в основном набор функций и классов) для прикладного (часто более высокоуровневого) программирования, который предоставляет, например, та или иная библиотека. SDL – это библиотека, которая работает с мультимедийными устройствами компьютера.

В этом смысле Pygame можно сравнить с Tkinter, который через свои функции и классы предоставляет Питону доступ к графической библиотеке Tk.

Особенности разработки компьютерных игр

Игры событийно-ориентированны, также как любое приложение с графическим интерфейсом пользователя. Поэтому какие-никакие, но игры можно было бы писать с помощью Tkinter, в частности на его экземплярах холста. Но поскольку основное назначение библиотеки графического пользовательского интерфейса совсем другое, то пришлось бы изобретать велосипеды. В то время как библиотека, специально предназначенная для написания игр, уже содержит необходимые объекты, что упрощает разработку.

Например, чтобы определить, столкнулись ли два объекта, надо написать код, проверяющий совпадение координат. Это может быть непростой задачей, так как надо учесть области перекрытия, форму объектов и др. В то же время игровой движок может включать готовую функцию проверки коллизии (столкновения) с необходимыми опциями настройки.

При всем этом Pygame достаточно низкоуровневый игровой движок, если его можно так называть. Это значит, что многое в нем не остается за кадром, а дается программисту на доработку, вынуждает его понимать, как работают «шестеренки». Так в Pygame отсутствует эмуляция физических явлений. Если вам надо смоделировать движение с ускорением или по дуге, программируйте это сами, предварительно взяв из курса физики соответствующую формулу.

Игры относятся к мультимедийным приложениям. Однако, в отличие от других приложений этой группы, для них характерна сложная программная логика и нередко много математики, хотя достаточно простой, плюс эмуляция физических явлений. В играх программируется подобие искусственного интеллекта. В многопользовательской игре, хотя пользователи играют друг с другом, а не с ИИ, создаются виртуальные миры, существующие по законам, заложенным разработчиками.

В программном коде игры выделяют три основных логических блока:

Отслеживание событий, производимых пользователем и не только им.

Изменение состояний объектов, согласно произошедшим событиям.

Отображение объектов на экране, согласно их текущим состояниям.

Эти три этапа повторяются в цикле бесчисленное количество раз, пока игра запущена.

Место Pygame среди инструментов разработки игр

Популярна ли библиотека pygame, пишут ли на ней сложные игры? Хотя на Pygame есть востребованные игры, в подавляющем случае – нет. Для программирования под андроид и десктоп существуют более функциональные игровые движки.

Для создания двумерных браузерных игр инди-разработчики (от слова independent – независимый, здесь понимается как «одиночка», «не работающий в команде или на фирму») часто используют JavaScript и его игровые библиотеки, так как JS родной для веба язык. Хотя существуют проекты перевода с Python на JavaScript (https://github.com/jggatc/pyjsdl).

В чем тогда преимущество Pygame? Оно в легком вхождении в отрасль и прототипировании. Pygame – небольшая библиотека. Сам Python позволяет писать короткий и ясный код. Так что это хорошее начало, чтобы познакомиться с особенностями разработки игр. Более опытными программистами Pygame может использоваться для быстрого создания прототипа игры, чтобы посмотреть, как все будет работать. После этого программа переписывается на другом языке. Другими словами, преимущество Pygame в легком обучении и быстрой разработке.

После Pygame жизнь разработчика игр на Питоне не заканчивается. Следует посмотреть в сторону Kivy (https://kivy.org). Это уже полноценный фреймворк, позволяющий писать на Python не только игровые приложения. В большей степени ориентирован для разработки под мобильные платформы.

Как установить Pygame

Pygame не входит в стандартную библиотеку Python, то есть не поставляется с установочным пакетом, а требует отдельной установки. В Ubuntu и родственных дистрибутивах его можно установить с помощью pip:

Если pip не установлен, предварительно выполняем команду:

Дополнительную информацию по установке смотрите здесь: https://www.pygame.org/wiki/GettingStarted

Проверить, что все установилось нормально, можно так:

Для Windows вместо ‘python3’ надо писать ‘py’. Произойдет запуск игры aliens, включенной в модуль examples (примеры) библиотеки pygame.

Шапошникова С. (plustilino) © 2020

Pygame. Введение в разработку игр на Python

Источник

Как создать 2D игру с Python и аркадной библиотекой

Привет, Хабр! представляю вашему вниманию перевод статьи How to create a 2D game with Python and the Arcade library автора Paul Vincent Craven

Как создать 2D игру с Python и аркадной библиотекой

Узнайте, как начать работу с Arcade, простой в использовании библиотеки Python для создания 2D-видеоигр.

Phython это отличный язык для людей, обучающихся программированию, и идеально подходит для тех, кто хочет «сделать что-то» а не тратить кучу времени на шаблонный код. Arcade это библиотека Python для создания 2D-видеоигр, которая проста в использовании и очень эффективна, когда вы набираетесь опыта. В этой статье я объясню, как начать использовать Python и Arcade для программирования видеоигр.

Я начал разработку на Arcade после обучения студентов с помощью библиотеки PyGame. Я преподавал лично, используя PyGame в течение почти 10 лет, и я разработал ProgramArcadeGames.com чтобы преподавать онлайн. PyGame-это здорово, но в конце концов я почувствовал, что трачу время на то, чтобы покрывать ошибки, которые никогда не исправлялись.
Я беспокоился о преподавании таких вещей, как цикл событий, который больше не был тем, как мы кодируем. У меня был целый раздел, в котором я объяснил, почему координаты Y были перевернуты. Поскольку PyGame редко обновлялся, и он основан на старой библиотеке SDL 1, а не на чем-то вроде более современного, такого как OpenGL, у меня не было большой надежды на будущее.

Я хотел создать библиотеку, которая была бы проще в использовании, более мощной и использовал некоторые из новых функций Python 3, такие как декораторы и подсказки типов. Это Аркада. И вот как надо начинать.

Установка

Arcade, как и многие другие пакеты, доступна через PyPi, что означает, что вы можете установить Arcade с помощью pip команды (или команды pipenv). Если у вас уже установлен Python, вы, вероятно, можете просто открыть командную строку в Windows и набрать:

Или на MacOS и Linux типе:

Для получения более подробной инструкции по установке, вы можете обратиться к Документация по установке аркады.

Простой рисунок

Вы можете открыть окно и создать простые рисунки с помощью всего лишь нескольких строк кода. Давайте создадим пример, который рисует смайлик, как показано на рисунке ниже:

Алгоритм ниже показывает, как вы можете использовать команды рисования Arcade для этого. Обратите внимание, что вам не нужно знать, как использовать классы или даже определять функции. Программирование с быстрой визуальной обратной связью отлично подходит для тех, кто хочет начать обучение программированию.

Использование функции

Конечно, написание кода в глобальном контексте не очень хорошая форма. К счастью, улучшить вашу программу с помощью функций легко. Здесь мы можем увидеть пример рисования сосны в определенном (x, y) месте с использованием функции:

Полный пример см. в разделе рисование с функциями.

Более опытный программист будет знать, что современные графические программы сначала загружают графическую информацию на видеокарту, а затем просят видеокарту нарисовать ее позже в виде пакета. Аркада также поддерживает это. Рисование 10 000 прямоугольников по отдельности занимает около 0,800 секунды. Рисование их в виде пакета занимает менее 0,001 секунды.

класс Window

Более крупные программы обычно наследуются от класса Window или используют декораторы. Это позволяет программисту писать код для обработки рисования, обновления и обработки входных данных от пользователя. Шаблон для запуска оконной программы приведен ниже.

Класс Window имеет несколько методов, которые ваши программы могут переопределять для обеспечения функциональности программы. Вот некоторые из наиболее часто используемых:

on_draw: весь код для рисования экрана идет сюда.
Обновление: весь код для перемещения ваших предметов и выполнения игровой логики находится здесь. Это называется около 60 раз в секунду.
on_key_press: обрабатывать события при нажатии клавиши, например, давать игроку скорость.
on_key_release: обрабатывает при отпускании ключа, здесь вы можете остановить движение игрока.
on_mouse_motion: вызывается каждый раз, когда движется мышь.
on_mouse_press: вызывается при нажатии кнопки мыши.
set_viewport: эта функция используется в играх с прокруткой, когда ваш мир намного больше, чем то, что можно увидеть на одном экране. Вызов set_viewport позволяет программисту установить, какая часть этого мира видна в данный момент.

Спрайты

Спрайты-это простой способ создать двухмерный растровый объект в Arcade. В Arcade есть методы, которые облегчают рисование, перемещение и анимацию спрайтов. Вы также можете легко использовать спрайты для обнаружения столкновений между объектами.

Создание спрайта

Создать экземпляр класса Sprite Arcade из графики легко. Программисту нужно только имя файла изображения, чтобы спрайт был основан, и, необязательно, число, чтобы масштабировать изображение вверх или вниз. Например:

Этот код создаст спрайт, используя изображение, хранящееся в coin_01.png. Изображение будет уменьшено до 20% от его первоначальной высоты и ширины.

Списки спрайтов

Спрайты обычно организованы в списки. Эти списки облегчают управление спрайтами. Спрайты в списке будут использовать OpenGL для пакетного рисования спрайтов как группы. Приведенный ниже код устанавливает игру с игроком и кучу монет, которые игрок собирает. Мы используем два списка, один для игрока и один для монет

Мы можем легко нарисовать все монеты в списках монет:

Обнаружение столкновений спрайтов

Обнаружение столкновений спрайтов
Функция check_for_collision_with_list позволяет нам увидеть, встречается ли спрайт с другим спрайтом в списке. Мы можем использовать это, чтобы увидеть все монеты, с которыми спрайт игрока соприкасается. Используя простой цикл for, мы можем избавиться от монеты из игры и увеличить наш счет.

Полный пример см. В разделе collect_coins.py.

Игровая физика

Многие игры включают в себя какую-то физику. Самыми простыми являются нисходящие программы, которые не позволяют игроку проходить сквозь стены. Платформеры добавляют больше сложности гравитации и движущимся платформам. В некоторых играх используется полноценный физический движок 2D с массой, трением, пружинами и многим другим.

Игры сверху вниз

Для простых игр сверху вниз аркадной программе нужен список стен, через которые игрок (или что-либо еще) не может пройти. Я обычно называю это wall_list. Затем физический движок создается в коде установки класса Window с помощью:

Player_sprite получает вектор движения с двумя атрибутами: change_x и change_y. Простым примером этого может быть перемещение игрока с помощью клавиатуры. Например, это может быть в настраиваемом дочернем элементе класса Window:

Хотя этот код устанавливает скорость игрока, он не перемещает игрока. В методе обновления класса Window при вызове Physics_engine.update () игрок будет перемещаться, но не через стены.

Полный пример см. В разделе sprite_move_walls.py.

Платформеры

Переход на платформер с боковым видом довольно прост. Программисту просто нужно переключить физический движок на PhysicsEnginePlatformer и добавить гравитационную постоянную.

Вы можете использовать такую программу, как Tiled чтобы заложить плитки / блоки, которые составляют ваш уровень.

Для полной 2D физики вы можете интегрировать библиотеку PyMunk.

Учись на примере

Один из лучших способов обучения — это пример. В библиотеке Аркад есть длинный список примеров программ, которые человек может использовать для создания игр. Каждый из этих примеров показывает концепцию игры, которую студенты просили на моих уроках или в Интернете на протяжении многих лет.

Запустить любую из этих демонстраций легко после установки Arcade. Каждый из примеров имеет комментарий в начале программы с командой, которую вы можете ввести в командной строке для запуска примера, например:

Краткие сведения

Arcade позволяет начать программирование графики и игр с помощью простого для понимания кода. Многие новые программисты создали отличные игры вскоре после начала. Попробуйте!

Источник

Понравилась статья? Поделиться с друзьями:

Не пропустите наши новые статьи:

  • программирование и кодинг в чем разница
  • Программирование и алгоритмизация что это
  • Программирование для чайников с чего начать
  • программирование для телефонов андроид с чего начать
  • программирование для сапр что это

  • Операционные системы и программное обеспечение
    0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest
    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии