Четверг, 29 октября, 2020

Язык программирования Python и библиотека Pygame для создания симуляций

С чего всё началось?

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

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

Почему именно Python?

Мне было достаточно даже обычных математических расчетов. О визуальном представлении я не особо думал. Всё равно они базируются на цифрах и можно было бы после изучения Python для бекэнда фронтэнд реализовать в каких-то программах, которые предстояло бы еще найти и изучить. Однако в процессе изучения Python оказалось, что это довольно легкий и невероятно мощный язык программирования с огромнейшим количеством библиотек практически на все случаи жизни. Поэтому начал искать подходящую библиотеку для создания симуляций. Совсем недавно в еще одном видео с симуляцией увидел, что авторы использовали библиотеку Pygame. Эта библиотека используется для создания простеньких игр и для создания визуальной части симуляции может подойти.

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

Примитивный пример симуляции на Python и Pygame

Процесс, пока что, вот на таком уровне — есть «клетка» (она белого цвета), есть ее «еда» (зеленые точки). Изначально их 250, но «клетка» начинает пожирать всё, что на ее пути. Она видит всё поле и идет к самой ближайшей точке. За каждую «съеденную» точку клетка получает от 40 до 60 единиц энергии. Для каждой точки «энергетическая ценность» определяется случайно.

После сокращения количества точек до 50 шт. они начинают появляться в случайных местах поля. Изначально у клетки 1000 единиц энергии, за каждый свой шаг она расплачивается 1 единицей.

В итоге можно заметить интересную ситуацию. Когда ресурсов много, клетка резко набирает энергию, но потом 50 ед. еды на игровом поле становится недостаточно и запасы энергии начинают тратиться. Как только энергии становится меньше или равно 0, симуляция останавливается.

Из блоггера в кибербиолога, используя Python

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

Конечно, «кибербиология», на мой взгляд, название довольно условное, потому что одна и та же симуляция может моделировать разные ситуации — от симуляции жизни одноклеточных то конкурентной среды на рынке. Восприятие зависит от контекста. В любом случае, у меня появилось новое хобби под этим условным названием. Если кому-то этот процесс также интересен и хочет поделиться идеями, буду рад услышать их. Как и в детстве, через игры можно научиться самой жизни.

Post Scriptum

Узнали композицию, использованную на фоне? Можете зашазамить, если не вспомнили. Название довольно символичное, поэтому её и выбрал 🙂

Автор материала

Rustam Gulov
Rustam Gulovhttps://alifbo.media
Автор и администратор сайта. Блоггер, медиа-тренер и консультант, сооснователь первой фактчек-платформы Таджикистана Factcheck.tj и блогплатформы Blogiston.tj. В свободное время читаю, веду канал на Телеграм, создаю сайты.

ОСТАВЬТЕ ОТВЕТ

Пожалуйста, введите ваш комментарий!
пожалуйста, введите ваше имя здесь