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

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

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

Что такое Pygame?

Это то, что может быть сложно понять новым разработчикам, так это то, что языки программирования редко существуют в вакууме. Например, при создании приложения для Android вам придется использовать не только Java или Kotlin (два основных языка программирования, поддерживаемых Google), но и Android SDK.

Это “набор для разработки программного обеспечения”, и он содержит множество различных библиотек, классов и инструментов, которые заставляют Java-код работать на Android и дают ему доступ к функциям, которые являются эксклюзивными для мобильных платформ.

Так же и с Питоном. Изучение Python недостаточно, чтобы начать создавать вещи по большей части вам нужен дополнительный код, предоставленный другими разработчиками, чтобы заставить эти программы работать. В Python эти внешние инструменты обычно принимают форму “модулей.” Это небольшие программы на Python, которые выполняют полезные функции, которые могут поддерживать ваше производство.

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

Тем не менее, те, кто привык к более всеобъемлющим игровым движкам и IDE, таким как Unity, могут найти Pygame несколько голыми костями. Здесь вы не найдете встроенной физики или причудливого интерфейса перетаскивания! Но хотя это может увеличить объем работы для вас как разработчика, это также освобождает вас от необходимости использовать свое воображение и подходить к вашему игровому проекту полностью с нуля.

Pygame был написан Питом Шиннерсом и выпущен в 2000 году. С тех пор это был проект сообщества, и в настоящее время он выпускается под лицензией opensourcefreesoftware GNU LesserGeneralPublicLicense.

Как сделать игру на Python — простой первый проект

Вместо того, чтобы рассказывать вам пошаговую игру, я дам вам код, а затем мы разберем, как все это работает. Далее вы пройдете мимо следующего кода.

importpygame
pygame.init()
win = pygame.display.set_mode((1280, 720))
pygame.display.set_caption(«Squarey»)
x = 100
y = 100
baddyX = 300
baddyY = 300
vel = 6
baddyVel = 4
run = True
defdraw_game():
win.fill((0, 0, 0))
pygame.draw.rect(win, (0, 0, 255), (x, y, 20, 20))
pygame.draw.rect(win, (255, 0, 0), (baddyX, baddyY, 40, 40))
pygame.display.update()

while run:
pygame.time.delay(100)

ifbaddyX< x — 10: baddyX = baddyX + baddyVeldrawGame() elifbaddyX> x + 10:
drawGame()
baddyX = baddyX — baddyVel
elifbaddyY< y — 10: baddyY = baddyY + baddyVelelifbaddyY> y + 10:
baddyY = baddyY — baddyVel
else:
run = False

for event in pygame.event.get():
ifevent.type == pygame.QUIT:
run = False

keys = pygame.key.get_pressed()

if keys[pygame.K_LEFT]:
x -= vel

if keys[pygame.K_RIGHT]:
x += vel

if keys[pygame.K_UP]:
y -= vel

if keys[pygame.K_DOWN]:
y += vel

draw_game()

pygame.quit()

И если это ничего для тебя не значит, не волнуйся!

Нажмите кнопку play, и вас встретит игра, которая позволит вам управлять маленьким зеленым квадратом вокруг экрана, пытаясь уклониться от красного квадрата.

Что все это делает?

Поздравляю! Вы только что узнали, как сделать игру на Python! Кроме того, вы, вероятно, не знаете, что все это делает или почему мы сделали это так, как мы сделали. Так что давайте пройдем через это, хорошо?
Во-первых, мы импортируем модуль, с которым Pygame с импортом соответствии с которым Pygame. Это, скорее всего, уже будет на вашем компьютере и, вероятно, пришло по умолчанию с вашей установкой.

Если это не так, то вы можете установить его с помощью pip. Нам также нужно инициализировать Pygame с помощью pygame.init(). Затем мы создаем окно для отображения нашей игры. «Set_caption” позволяет нам дать нашей игре название, отображаемое в верхней части указанного окна.

importpygame
pygame.init()
win = pygame.display.set_mode((1280, 720))
pygame.display.set_caption(«Squarey»)

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

PHPSELECT ALL
x = 100
y = 100
baddyX = 300 baddyY
= 300
vel = 6 baddyVel
= 4
run = True

Далее есть небольшая функция drawGame().Здесь мы сначала заполняем экран пустым цветом (черным). Это означает, что мы можем перемещать положение наших персонажей, не оставляя за собой следа. Другой вариант-нарисовать символы поверх самих себя черным.

За этим следует рисование двух квадратов. Мы помещаем их внутри окна, даем им цветовые коды RGB, а затем устанавливаем координаты X и Y перед добавлением ширины и высоты. Помните: по коридору и вниз по лестнице! Я подумал, что имеет смысл сделать нашего плохого парня немного больше, чем хорошего, и сделать его страшно красным!

Наконец, мы вызываем pygame.display.update(), так что эти элементы действительно рисуются на экране:

defdraw_game():
win.fill((0, 0, 0))
pygame.draw.rect(win, (0, 0, 255), (x, y, 20, 20))
pygame.draw.rect(win, (255, 0, 0), (baddyX, baddyY, 40, 40))
pygame.display.update()

Следующая часть кода — это то, где происходит настоящее веселье. Это “шаблонный шаблон”, который вы, вероятно, увидите во многих творениях Pygame. По сути, это цикл, который будет повторяться до тех пор, пока значение run установлено в True.

Первая строка этого цикла добавляет короткую задержку. По сути, это то, что установит нашу “частоту кадров” и предотвратит все происходящее слишком быстро, чтобы мы даже могли видеть!

whilerun:
pygame.time.delay(100)

В принципе, все, что мы хотим повторять, будет идти по кругу. Первое, что мы помещаем здесь, — это немного кода, который определяет поведение нашего плохого парня. При этом используются операторы if и elif (else, if) для управления потоком кода.

Если значение координат игрока больше, чем координаты плохого парня, то плохой парень будет двигаться, чтобы изменить это — приблизиться к нашей позиции. Поскольку наши персонажи перемещаются на несколько пикселей за раз (как определено переменными vel и baddyVel), я добавил немного места для ошибок.

ifbaddyX< x — 10: baddyX = baddyX + baddyVeldrawGame() elifbaddyX> x + 10:
drawGame()
baddyX = baddyX — baddyVel
elifbaddyY< y — 10: baddyY = baddyY + baddyVelelifbaddyY> y + 10:
baddyY = baddyY — baddyVel
else:
run = False

Однако если координаты попадают в 10 пикселей нашего игрока, то игра окончена! run имеет значение False, и программа выходит из цикла. Последнее утверждение, следующее за циклом, завершает игру.

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

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

for event in pygame.event.get():
ifevent.type == pygame.QUIT:
run = False

keys = pygame.key.get_pressed()

if keys[pygame.K_LEFT]:
x -= vel

if keys[pygame.K_RIGHT]:
x += vel

if keys[pygame.K_UP]:
y -= vel

if keys[pygame.K_DOWN]:
y += vel

draw_game()

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

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *