Создание 2D платформера на Python ⚡ Информационные статьи и интересные новости из мира IT на сайте школы программирования itProger
Где применяется Python
Python используется в разных областях программирования не просто так. Он прост в изучении, имеет приятный синтаксис и обладает достаточным для решения любых задач набором инструментов.
И хотя он не может потеснить Java и PHP с ведущих мест в веб-разработке, в сфере машинного обучения Python – язык номер один.
Создание приложений
Python можно использовать для разработки десктопных и мобильных приложений, для этого разработано много мощных инструментов. Однако крупные проекты зачастую не пишут только на одном Python полностью.
Python часто используется для разработки отдельных частей приложения, он позволяет создать простую систему моддинга. Благодаря высокой степени модульности, изменение одной части программы может не затрагивать другую.
Возможность встроить в Python код на С/C++ сглаживает проблему низкой скорости работы программ.
Можно и полностью разрабатывать полноценные приложения для мобильных устройств, используя фреймворки, например, Kivi.
Веб-разработка
Python захватил определенную часть сферы, но не может соперничать с такими гигантами, как PHP, Java и Node.js. Для реализации серверной логики они удобнее и мощнее Python.
На Python часто создаются решения, которые имеют узкую направленность. Например, отправку документа с сайта на принтер трудно реализовать на PHP, а Python легко справляется с этой задачей.
Python проигрывает, потому что он является языком общего назначения, PHP – это инструмент, заточенный только под веб-программирование, а Java уже давно используется в вебе.
Машинное обучение
Искусственный интеллект с каждым годом становится лучше, ученые одержимы идеей создать суперкомпьютер, превосходящий человека во всем.
Python стал абсолютным лидером в этой сфере по ряду причин:
- Язык очень простой, это нравится ученым. Им не нужно тратить много времени на написание кода, вместо этого они могут сосредоточиться на проектировании ИИ.
- В Python легко встраивается код на C и C++, что позволяет использовать C-код в тех местах, где важна скорость.
- Python обзавелся достаточным количеством библиотек и фреймворков, созданных для упрощения машинного обучения.
- Гибкость языка позволяет не ограничиваться какой-то одной парадигмой разработки, программист может писать как объектно-ориентированные программы, так и процедурные.
Источник: http://all-python.ru/osnovy/izvestnye-programmy.html
Логика игры
Есть игровое поле — простой прямоугольник с твёрдыми границами. Когда шарик касается стенки или потолка, он отскакивает в другую сторону. Если он упадёт на пол — вы проиграли. Чтобы этого не случилось, внизу вдоль пола летает платформа, а вы ей управляете с помощью стрелок. Ваша задача — подставлять платформу под шарик как можно дольше. За каждое удачное спасение шарика вы получаете одно очко.
Источник: http://thecode.media/pygames/
Orisinal Games:
Сайт Orisinal предлагает большую коллекцию флеш игр с очень простой механикой, которые могут быть скопированы.
Особенно удачной являются Winter Bells, A Daily Cup of Tea, Bugs и Hold the Rope.
Также идеи для игр-клонов можно найти в Википедии. Подробнее об этом для начинающих программистов можно узнать из бесплатных книг по программированию на Python — «Invent Your Own Computer Games with Python» и «Making Games with Python & Pygame». Все они с открытым исходным кодом и являются отличным материалом для новичков.
Источник: http://proglib.io/p/9-ideas-for-games/
Установка
Arcade, как и многие другие пакеты, доступна на
PyPi
, а значит, можно установить Arcade при помощи команды pip (или
pipenv
). Если Python уже установлен, скорее всего можно просто открыть командную строку Windows и написать:
pip install arcade
А в Linux и MacOS:
pip3 install arcade
Для более детализированной инструкции по установке, почитайте
документацию
по установке Arcade.
Источник: http://itnan.ru/post.php?c=1&p=419761
Игровой цикл
В сердце каждой игры лежит цикл, который принято называть «игровым циклом». Он запускается снова и снова, делая все, чтобы работала игра. Каждый цикл в игре называется кадром.
В каждом кадре происходит масса вещей, но их можно разбить на три категории:
- Обработка ввода (события)
Речь идет обо всем, что происходит вне игры — тех событиях, на которые она должна реагировать. Это могут быть нажатия клавиш на клавиатуре, клики мышью и так далее.
- Обновление игры
Изменение всего, что должно измениться в течение одного кадра. Если персонаж в воздухе, гравитация должна потянуть его вниз. Если два объекта встречаются на большой скорости, они должны взорваться.
- Рендеринг (прорисовка)
В этом шаге все выводится на экран: фоны, персонажи, меню. Все, что игрок должен видеть, появляется на экране в нужном месте.
Время
Еще один важный аспект игрового цикла — скорость его работы. Многие наверняка знакомы с термином FPS, который расшифровывается как Frames Per Second (или кадры в секунду). Он указывает на то, сколько раз цикл должен повториться за одну секунду. Это важно, чтобы игра не была слишком медленной или быстрой. Важно и то, чтобы игра не работала с разной скоростью на разных ПК. Если персонажу необходимо 10 секунд на то, чтобы пересечь экран, эти 10 секунд должны быть неизменными для всех компьютеров.
Источник: http://pythonru.com/uroki/biblioteka-pygame-chast-1-vvedenie
Начало программы
Чтобы у нас появилась графика в игре, используем библиотеку Tkinter. Она входит в набор стандартных библиотек Python и позволяет рисовать простейшие объекты — линии, прямоугольники, круги и красить их в разные цвета. Такой простой Paint, только для Python.
Чтобы создать окно, где будет видна графика, используют класс Tk(). Он просто делает окно, но без содержимого. Чтобы появилось содержимое, создают холст — видимую часть окна. Именно на нём мы будем рисовать нашу игру. За холст отвечает класс Canvas(), поэтому нам нужно будет создать свой объект из этого класса и дальше уже работать с этим объектом.
Если мы принудительно не ограничим скорость платформы, то она будет перемещаться мгновенно, ведь компьютер считает очень быстро и моментально передвинет её к другому краю. Поэтому мы будем искусственно ограничивать время движения, а для этого нам понадобится модуль Time — он тоже стандартный.
Последнее, что нам глобально нужно, — задавать случайным образом начальное положение шарика и платформы, чтобы было интереснее играть. За это отвечает модуль Random — он помогает генерировать случайные числа и перемешивать данные.
Запишем всё это в виде кода на Python:
# подключаем графическую библиотекуfrom tkinter import *# подключаем модули, которые отвечают за время и случайные числаimport timeimport random# создаём новый объект — окно с игровым полем. В нашем случае переменная окна называется tk, и мы его сделали из класса Tk() — он есть в графической библиотеке tk = Tk()# делаем заголовок окна — Games с помощью свойства объекта titletk.title(‘Game’)# запрещаем менять размеры окна, для этого используем свойство resizable tk.resizable(0, 0)# помещаем наше игровое окно выше остальных окон на компьютере, чтобы другие окна не могли его заслонитьtk.wm_attributes(‘-topmost’, 1)# создаём новый холст — 400 на 500 пикселей, где и будем рисовать игруcanvas = Canvas(tk, width=500, height=400, highlightthickness=0)# говорим холсту, что у каждого видимого элемента будут свои отдельные координаты canvas.pack()# обновляем окно с холстомtk.update()
Мы подключили все нужные библиотеки, сделали и настроили игровое поле. Теперь займёмся классами.
Источник: http://thecode.media/pygames/
Шаблон
В конечном итоге у нас должен появиться вот такой вот шаблон для написания проекта на pygame.
Последней, 30-й, строчкой обязательно пишем окончание программы, чтобы она нормально закрывалась.
Источник: http://blog-android.ru/interesting-facts/kak-pisat-igry-na-python-3-7/
Платформа
Сделаем то же самое для платформы — сначала опишем её поведение словами, а потом переведём в код. Итак, вот что должна уметь платформа:
- двигаться влево или вправо в зависимости от нажатой стрелки;
- понимать, когда игра началась и можно двигаться.
А вот как это будет в виде кода:
Источник: http://zen.yandex.ru/media/code/pishem-igru-na-python-5dbaa3914e057700b0d055fd
Создание спрайта
Создать инстанс
Sprite
класса Arcade очень легко. Программисту необходимо только название файла изображения, на котором будет основываться спрайт, и, опционально, число раз для увеличения или уменьшения изображения. Например:
SPRITE_SCALING_COIN = 0.2coin = arcade.Sprite(«coin_01.png», SPRITE_SCALING_COIN)
Этот код создает спрайт, используя изображение coin_01.png. Картинка уменьшится до 20% от исходной.
Источник: http://itnan.ru/post.php?c=1&p=419761
Платформеры
Переход к платформеру с видом сбоку достаточно прост. Программисту необходимо переключить физический движок на PhysicsEnginePlatformer и добавить гравитационную константу.
self.physics_engine = arcade.PhysicsEnginePlatformer(self.player_sprite, self.wall_list, gravity_constant=GRAVITY)
Для добавления тайлов и блоков, из которых будет состоять уровень, можно использовать программу вроде
Tiled
.
Пример доступен в
sprite_tiled_map.py.
Источник: http://itnan.ru/post.php?c=1&p=419761