Все, кто кодят на Python, знают, что это далеко не скучный и серьезный язык. При определенной доле фантазии на нем можно написать логику работы любого приложения, даже совершенно гиковского. И есть немало примеров, когда такие пет-проекты становились не только полем развития навыков разработчика, но и коммерческой идеей. Под катом собрали шесть подобных задач от Selectel — для вдохновения и прокачки навыков. Сохраняйте статью в закладки: пригодится всем, кто разрабатывает на Python.

Выберите интересующий вас проект:

Shawarma as a service
«Minecraft» на Python
Мод для Cyberpunk 2077
Динозаврик Google на тачбаре
Рускоязычная игра в слова с ИИ
Тетрис в QR-коде

Shawarma as a service


Суть проекта


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

Для создания TG-бота автор использовал фреймворк Python Telegram Bot 20.0, а для веб-интерфейса — FastAPI. На тот момент как раз вышло обновление WebApp. С его помощью Вова заменил меню DurgerKing’а на директивы для шаблонизатора Jinja2 и добавил страницу с описанием каждой позиции.


Рассказываем, как написать Shawarma Bot →

Что вы узнаете из текста


  • Откуда пошла традиция есть шаверму по четвергам.
  • С каким проблемами в разработке столкнулся наш разработчик и как с ними боролся.
  • Сколько людей остались без еды за все время работы бота.

«Minecraft» на Python


Суть проекта


Если вам надоело просто играть в Minecraft, предлагаем создать собственный мир из кубов с помощью библиотеки Ursina Engine. В статье автор показывает, как работать с объектами Entity, настроить взаимодействие с предметами и добавить элементы «атмосферы» в игровой процесс. Отдельное внимание он уделил генерации Minecraft-подобного мира. Для этого воспользовался матрицей из шумов Перлина, которая «отрисовывает» ландшафт игры.

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


Показываем, как создать мир из кубов →

Что вы узнаете из текста


  • Как написать простой GUI игры на базе Ursina Engine.
  • Как сгенерировать «бесконечный» ландшафт, не понизив FPS.
  • Как добавить наблюдателя с помощью встроенного объекта FirstPersonController.

Мод для Cyberpunk 2077


Суть проекта


Наши коллеги решили сделать амбициозный проект — VR-жилет, который «проецирует» ощущения урона персонажа на тело игрока. Чтобы осуществить эту идею, им нужен был мод, который отправляет данные из Cyberpunk 2077 на сам жилет. Однако информации по созданию моддинга мало, не говоря уже о готовых решениях. Поэтому решили самостоятельно разработать мод с помощью отправки данных по сети и UDP-датаграмм.

Для создания мода нашему разработчику пришлось прошерстить исходники игры, Lua, C++ и Python. А также выбрать подходящий редактор кода, среди которых — WolvenKit, RED4ext, REDmod, Cyber Engine Tweaks и другие. Две последние он использовал для разработки мода, а RED4ext — для отправки данных в формате JSON.


Консоль Cyber Engine Tweaks.

Делимся инструкцией, как создать реалистичный мод →

Что вы узнаете из текста


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

Динозаврик Google на тачбаре


Суть проекта


С 2016 года у некоторых моделей MacBook Pro есть сенсорная OLED-панель — тачбар. Она не только заменяет привычные функциональные клавиши, но и позволяет разрабатывать собственные. Наш технический писатель Влад решил воспользоваться этой функцией и создать мини-игру с бегущим динозавриков от Google.

В статье автор показал, как с помощью Python и открытой библиотеки PyTouchBar спроектировать свою небольшую игру. И все это без погружения в драйверы и разработку на Swift.


Представление игровой сцены.

Показываем, как добавить нового «друга» на тачбар →

Что вы узнаете из текста


  • Как настроить игровую сцену с помощью числовых чанков.
  • Как научить динозаврика прыгать через кактус.
  • Как добавить подсчет набранных очков после окончания игры.



Рускоязычная игра в слова с ИИ


Суть проекта


На первый взгляд игра contexto кажется простой: нужно угадать загаданное слово. Однако нашему коллеге потребовалось 33 попытки и одна подсказка, чтобы найти верное. Осложнялось все тем, что игра доступна только на португальском и английском языках. Поэтому автор решил сделать свою версию — «Русо контексто».

Чтобы локализовать игру на русский, автор использовал модель от RusVectores, обученную на Национальном Корпусе Русского Языка. А для очистки модели от неподходящих слов — эмбеддинг Navec. Для статистики: только 36 269 токенов из 248 978 прошли «сито» эмбеддинга.


Рассказываем, как адаптировать игру на русский язык →

Что вы узнаете из текста


  • Зачем к словам добавлять теги _NOUN или _VERB.
  • Как получить начальную форму слова с помощью pymystem3.
  • Как настроить бэкенд, чтобы играть без интернета.

Тетрис в QR-коде


Суть проекта


Разработчик Вова вдохновился гифкой и сделал настоящий тетрис в QR-коде. А также рассказал, как устроена его топология. К слову, код полностью рабочий — наведите на него камеру и убедитесь сами.

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


Показываем, как сделать тетрис в QR-коде →

Что вы узнаете из текста


  • Как настроить размер QR-кода с помощью функции y=ax^2+bx+c.
  • Как использовать numpy для решения систем уравнений в Python.
  • Как создать свою последовательность действий из одной фигуры.

Полезные материалы по теме


   

Комментарии (0)