Найти тему
Алексей Якубенко

Как сделать игру на Python под Android?

всем привет и знайте я почему-то уверен

что почти у каждого кто меня сейчас

смотрит android телефон так вот что если

я скажу вам что всего за каких-то 10

минут можно создать свою простенькую

игру под android и при этом не

использовать unity анриал или другие

известные движки и конструкторы то есть

сделать все самостоятельно примерно

также как мы это делали в прошлом

выпуске который кстати уже посмотрела

почти полмиллиона человек и это круто

вот только если тогда мы использовали

довольно сложный python киви то на этот

раз мы будем юзать простейший пай геем

серьезно на нём игру может сделать даже

человек который первый день

программировать на пойти не да и

скомпилить потом ее под android тоже

легко обещают справится каждый причем

так вы сможете делать не только игры но

еще и всякие простенькие приложения на

пай ты не под android ну а игру мы

сделаем просто для примера и

предвосхищая вопрос мы будем делать

змейку так как алгоритм там очень

простой да и к тому же тот же слизарио

это типа тоже змейка просто в нее

добавили крутые фишки и новую механику и

кстати мы тоже будем делать не совсем

обычную змейку

ну и давайте начнем итак сначала нам

нужно установить сампайо геем но не

пугайтесь это очень простая библиотека и

нужно она лишь для того чтобы мы легко

рисовали квадратики и кружочки в нашей

программе дальше в какой-нибудь

отдельные папки создаем фай лик омоем по

этот мы будем прописывать весь нужный

код для игры и сразу давайте напишем код

который инициализирует по и геем и

просто создают окно размером 640 на 480

как видите код очень легкий если

попробуйте его прочитать то тут даже

комментарии не нужны самое главное что

нам здесь нужно так это игровой цикл или

же game lube

это как раз то место где будет

отрисовывается каждый кадр нашей игры мы

тут можем даже указать лимит fps а но

это чуть позже

сначала давайте нарисуем саму змейку и

тут тоже ничего сложного потому что наша

змейка это тупо квадратик на экране

который мы сейчас

оживим и он начнет двигаться пожирая

яблоки

ну а программно это делается следующим

образом мы вызываем метод по game дрожек

и указываем в нем во-первых ранее

созданную переменную дисплей во вторых

передаем цвет закраски указывая его как

rgb и наконец позицию нашего квадратика

на холсте по координатам x и y а также

его ширину и высоту и если сейчас

запустить код то мы получим самый

обычный зеленый квадратик по центру

экрана который ничего не делает так его

дальше нам нужно понять что для создания

змейки существует грубо говоря два

алгоритма 1 с привязкой к сетке и он

простой

а второй без и он посложнее давайте

реализуем 1 так как он попроще так вот

привязка к сетке означает то что мы

разбиваем игровое поле на сетку то есть

делим ширину и высоту нашего холста на

условный размер головы или элемента

хвоста нашей змейки и и если учесть что

наша змейка имеет размер 10 на 10

пикселей то наши текущие игровое поле

имеющий размер 640 на 480 пикселей

вполне хорошо подойдет потому что как по

ширине так и по высоте делится на 10 без

остатка ну а в самом коде мы просто

запоминаем все эти данные и каждый раз

отрисовываем змейку на новой позиции а

для управления пока что будем

использовать просто клавиши стрелок для

теста этого вполне хватит теперь

запускаем и смотрим что у нас получилось

выглядит конечно круто но кажется мы

забыли очищать экран быстренько это

исправляем в коде и смотрим заново как

видите все работает единственное в

настоящий змейки когда она уходит за

пределы экрана то появляется на

противоположной стороне будто бы по

краям экрана имеется некий телепорт в

коде же это делается тоже довольно легко

мы просто проверяем позицию змейки по

двум осям то есть по вертикали и по

горизонтали и если вдруг она ушла за

границы нашего икра

на то перебрасываем ее на

противоположную позицию ну и чтобы

совсем прям по красоте

давайте сразу допилим змейки хвост а то

она у нас какая-то не то чтобы змейка

и тут на самом деле еще один интересный

момент в алгоритме реализации игры

змейка дело в том что оппозицию каждого

элемента хвоста мы будем сохранять точно

так же как и для головы

а во время передвижения головы змейки и

и старую позицию займет первый элемент

хвоста а второй элемент займет позицию

первого элемента хвоста

соответственно а третий элемент займет

позицию второго элемента и так далее

вплоть до последнего элемента если кто

не знал то именно так это и работает ну

а в коде реализуется еще проще для этого

в paid они есть удобные списке и не знаю

кто как это делает но я люблю писать код

следующим образом я создаю две

переменные ltx а л т а и который

инициализируются старой позиции

головного элемента затем в цикле

временным переменным присваивается

текущая позиция элемента хвоста а самому

элементу хвоста присваивается позиция

сохраненная в переменной ltx съел твой

напоминаю что при первой итерации цикла

они хранят в себе значение старой

позиции головного элемента змейки но и в

конце цикла перемены lt excel твой

обновляются новыми значениями которые

уже со второй итерации будут хранить

позицию прошлого элемента хвоста ведь

следующий элемент хвоста нам надо

поставить на его место и так далее до

конца теперь запускаем код и видим что

все работает для примера в коде я

инициализировал 3 тестовых элемента

хвоста плюс они еще у нас имеют более

темный цвет ну и теперь осталось сделать

яблочки кстати программировать змейку на

пальто не это очень даже символично типа

когда говорят об ой ты не всегда

показывают одноименную змею и в игре мы

типа тоже делаем змейку

и это круто потому что python это

действительно мощный и востребованный

язык программирования входящий в топ-3

самых востребованных языков

так что рекомендую обратить внимание на

курс python для вы бы разработки который

начинается уже совсем скоро

и тут вас с нуля научат программировать

на этом языке который сейчас активно

применяется для разработки мобильных и в

приложении а также лидирует в сфере

машинного обучения ну а на курсе вам

дадут крепкую техническую базу обучат

всему что необходимо в том числе и

крутому фреймворка django в общем

скучать не придется а если успеете

оставить заявку до 10 августа то по

промо коду хауди хо получите огромную 45

процентную скидку ссылка на курс будет в

описание под роликом и кей нам осталось

добавить в игру яблочки и внести пару

штрихов и как вы уже понимаете яблочки

спавнятся по одному где-то рандомно на

карте

к тому же есть два мелких условия

которые нам тоже надо запрограммировать

ее касаются они змейки но до этого мы

сейчас доберемся сперва яблоки

а точнее яблоко потому что она у нас

всегда будет одно да и определить что

голова змейки за дело яблоко очень

просто потому что у нас тут все

располагается как вы помните по сетке

соответственно мы просто где-то рандомно

рисуем яблочко а затем проверяем

совпадает ли сейчас позиция головы

змейки с позиции этого самого яблока

если да то получается мы его съедаем и

спавним где-то в новом месте а змейки

добавляем хвост и как видим в игре все

работает вот только есть два мелких

минуса два первых змейка сейчас может

внезапно развернуться на 180 градусов

чего вообще то делать не должно а

во-вторых по правилам игры змейка не

может коснуться своего хвоста

исправим первую мелочь чтобы нельзя было

разворачиваться на 180 градусов нужно

просто в момент поворота проверять куда

мы сейчас движемся и запрещать движение

противоположном направлении типа если

змейка сейчас идет налево то направо ей

нельзя а учитывая что змейка

одновременно может двигаться как бы

только по одной оси то есть либо по

вертикали либо по горизонтали в коде мы

можем просто прописать проверку что

поворот возможен только если сейчас не

происходит никакого движения по

указанной

сие типа если двигаясь на лево мы хотим

повернуть направо или даже опять налево

этого не произойдет потому что змейка

сейчас итак движется по оси x

ну а со второй мелочью еще интереснее на

самом деле проверить съедает ли змейка

сейчас свой хвост или нет это довольно

просто потому что у нас все по сетке а

значит мы можем просто и тренировать

каждый элемент хвоста змейки и проверять

совпадает ли его позиция с головой

змейки если дарта как бы змейка наехала

на свой хвост если же нет то все в

порядке можно двигаться дальше и

единственная при наезде на свой хвост я

реализую прикольную фичу сами смотрите

мне кажется так уже гораздо логичнее

когда приседание хвоста просто пропадает

его а задняя часть типа мы его

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

простенькой игре есть где развернуться

фантазии а вы пишите в комментариях

каких бы плюшек еще реализовать в игре в

следующей части мы ее доделаем я

возможно реализую какие-то ваши идеи и

мы скомпилируем эту игру под android

хочется чтобы игра была не совсем

простой поэтому пишите свои идеи в

комментарии

в остальном же я жду ваш царский лайк

конечно же подписывайтесь на канал и

включайте колокольчик уведомлений так

мои выпуски хоть иногда до будут

появляться у вас на главную туба удачи

не всегда помните программирование

должно быть в удовольствие

Наука
7 млн интересуются