/crabots

Симуляция естественного отбора ботов на квадратной сетке

Primary LanguageRust

crabots

Я ещё давно заинтересовался языком Rust. У него крутой синтаксис, интересные концепции и шикарная система сборки. И работает он не медленней C++, и в будущем даже будет быстрее. Как раз я устал программировать на плюсах, и Rust — мой идеальный вариант для изучения нового языка.

Начал его изучать ещё год назад, но тогда забросил, а сейчас снова вернулся, и, кажется, больше не буду забрасывать.

Вернулся очень удачно: вместо того, чтобы готовиться к сессии, за 3 дня залпом посмотрел 13 полуторачасовых лекций Алексея Кладова по этому языку (крутая прокрастинация, да?). Затем в качестве тренировки захотел реализовать на этом языке программу, написанную одним чуваком на питоне. К сожалению он ещё свою программу не опубликовал, поэтому сослаться на неё не могу.

Программа эта из себя представляет что-то вроде симуляции жизни на плоскости с квадратными "ботами". У ботов есть программа, согласно которой они живут. При размножении эта программа может немного меняться. В мире есть ограниченные ресурсы, поэтому возникает что-то вроде естественного отбора и эволюции. Но эволюционировать там особо нечему, потому что в программе всего 5 команд:

  • Атаковать другого бота
  • Переместиться в случайную соседнюю клетку
  • Размножиться
  • Фотосинтезировать
  • Съесть свободный ресурс

Так же в зависимости от команды боту в его отображение подмешивается соответствующий цвет. Например, для атаки - красный, а для фотосинтеза - зелёный.

Такой мир пока не очень интересный и красивый. Главная цель была в переводе программы и в изучении программирования на Rust'е.

А вот статичная ссылка для текущей версии этой программы:

https://optozorax.github.io/crabots/www_0.2.8/index.html

Работает из браузера, даже на телефоне. На телефоне поддерживается перемещение и масштабирование пальцами.

Новая версия подобной программы от того чувака, кодом которого я вдохновлялся: https://github.com/yuuretsu/evolution-of-artifical-life