Top.Mail.Ru
 

Создаем собственную 2D игру на Python за один вечер

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

1. Установи язык Python на Windows. Инструкцию по установке можно без труда найти в интернете. В случае возникновения проблем всегда можно обратиться с вопросами на форум.

2. Если все получилось правильно, то перед тобой черное окно (консоль), где ты можешь вводить команды-заклинания, дающие результат.

3. Введи команду «pip install arcade» и запусти ее. Если на предыдущем шаге ты все сделал правильно, то библиотека Arcade установится и расширит возможности Python, чтобы ты мог создать свою первую игру.

Рисуем персонажей игры

Давай перейдем к реальным действиям. Несколькими строчками кода создадим улыбающееся лицо. Нам не понадобится знание функций или классов (если не знаешь, что это такое, то не пугайся и ни в коем случае не бросай следовать инструкции). Если ты воспользовался инструкцией в шаге №1, то работаешь из командной строки Windows – cmd. Посмотрите, какой путь ведет к корню.

По этому пути на своем компьютере создай файл в формате python. У меня он называется: game.py. Теперь зададим параметры рисунка персонажа, которые хотим получить с помощью операторов языка.

// Установим константы для размера холста, на котором будет рисунок:

WIN_WIDTH = 500
WIN_HEIGHT = 500

// Открываем экран, пользуясь установленными выше параметрами и присваиваем ему заголовок:

arcade.open_window(WIN_WIDTH, WIN_HEIGHT, "Компьютерная игра")

// В нашем случае сделаем фон голубого цвета, но ты можешь указать другие цвета, вместо него, укажи gray, yellow, white, black. Попробуй посмотреть, что получилось к настоящему моменту. Для этого в начале строки консоли нужно написать game.py и щелкнуть Enter на клавиатуре. Открылось окошко? Поехали дальше!

arcade.set_background_color(arcade.color.BLUE)

// Запускаем рендеринг. Не стоит пока вникать, что это, научимся применять его на практике. Рендеринг необходимо выполнить до каких-либо команд, формирующих изображение на холсте.

arcade.start_render()

// Теперь нам нужно нарисовать нашего персонажа, пусть это будет веселый смайлик. Создадим лицо.

face_x = 300

face_y = 300

face_radius = 200

arcade.draw_circle_filled(face_x, face_y, face_radius, arcade.color.YELLOW)

// Правый глаз.

righteye_x = 360

righteye_y = 340

righteye_radius = 20

arcade.draw_circle_filled(righteye_x, righteye_y, righteye_radius, arcade.color.BLACK)

// Теперь нам требуется повторить все то же самое для левого глаза нашего смайлика.

lefteye_x = 360

lefteye_y = 340

lefteye_radius = 20

arcade.draw_circle_filled(lefteye_x, lefteye_y, lefteye_radius, arcade.color.BLACK)

// Отлично! Ну а теперь мы перейдем к созданию улыбки на нашем замечательном лице. Запускать периодически скрипт game.py, чтобы следить за прогрессом в реализации нашего проекта не стоит, так мы еще не выполнили рендеринг и результаты работы не будут отображаться.

smile_x = 300

smile_y = 280

smile_width = 120

smile_height = 100

start_angle = 190

end_angle = 350

arcade.draw_arc_outline(smile_x, smile_y, smile_width, smile_height, arcade.color.BLACK, start_angle, end_angle, 10)

// Демонстрируем результат.

arcade.finish_render()

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

arcade.run()

Теперь запустите в консоли cmd созданный скрипт, нажав на кнопку Enter.

Рисуем локацию, в которой будет действовать наш смайлик

Создадим для примера несколько рисунков деревьев, ориентированных на квадратном поле с помощью осей x и y:

def maketree(x, y):

// Если вы отите нарисовать ель, то можно использовать функцию def draw_pine_tree(), она рисует хвойное дерево, код, изображающий другие виды растительности или объекты можно почерпнуть из документации python.

Просто создайте несколько деревьев, повторив вызов функции несколько раз и задав нужные параметры X и Y.

Даем возможность управлять графическими элементами пользователю и заставляем элементы двигаться

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

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

import arcade

WIN_WIDTH = 800

WIN_HEIGHT = 600

class MyGame(arcade.Window):

def __init__(self, width, height):

super().__init__(width, height)

arcade.set_background_color(arcade.color.AMAZON)

def setup(self):

def on_draw(self):

arcade.start_render()

// Вставьте ранее написанный нами код локации с деревьями сюда

def update(self, delta_time):

// Логика движений персонажей прописывается тут.


def main():

game = MyGame(WIN_WIDTH, WIN_HEIGHT)

game.setup()

arcade.run()

if __name__ == "__main__":

main()

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

• on-draw: функция отрисовывает экран, посмотри, как она применяется в нашем классе для создания game-плея;
• update: после этого оператора можно писать код, управляющий персонажами, передвигающимися по нарисованной локации. Функция очень эффективна, вызывается 60 раз в секунду и способна «обсчитывать» большое количество персонажей, представленных в игре;
• on_key_press: задаем события, которые при нажатии какого-либо элемента в программе, на практике так можно, например, ускорить персонажа игрока, если он «взял» какой-либо бонус;
• on_key_release: управляет событиями, которые происходят после того, как какой-либо элемент становится неактивным. С помощью данной функции ты можешь, например остановить персонажа, когда игрок перестал нажимать определенную кнопку.
• on_mouse_motion: можно задать любые действия персонажа, если пользователь двигает мышью;
• on_mouse_press: делаем что-то, когда игрок нажал кнопку на мышке;
• set_viewport: функция нужна тогда, когда наш 2D-мир не умещается целиком в экран и игровой персонаж может пройти в новую локацию. Она позволяет программисту показывать при нужных действиях пользователя нужную часть нарисованного мира. Например, если игрок нажимает на кнопку движения, ему можно демонстрировать новые территории.

«Гугли», какие параметры нужно устанавливать вышеперечисленным переменным и вставляй их в нужную часть класса. Для начала, заставь желтый смайлик по нажатию кнопок двигаться по лесу из наших нескольких деревьев. Получилось? Если нет, можешь задать вопросы на форуме по программированию игр на пайтон!

Я сотрудник Я абитуриент Я студент