Skip to content

PilotOfAsuka/cell_lab_fliperzero

Repository files navigation

Cell Lab for Flipper Zero

Мини-симулятор жизни для Flipper Zero: весь экран 128x64 является миром, каждый пиксель является клеткой мира.

Состояния клетки:

  • пусто;
  • еда;
  • живая клетка.

Живые клетки тратят энергию, едят соседнюю еду, двигаются, делятся при избытке энергии и умирают, иногда оставляя после себя еду. Еда больше не мигает: если она появилась в мире, она остается видимой до съедения.

У каждой живой клетки есть 16-битный геном:

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

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

Явные раздражители мира:

  • температура;
  • радиация;
  • токсины;
  • скученность.

Они влияют на стоимость жизни, выбор клетки для движения, шанс смерти и стрессовые мутации.

Если живых клеток становится ноль, симулятор автоматически запускает новую генерацию мира.

Управление

  • Left / Right — плавно переключить окна: мир, состояние мира, настройки мира, настройки приложения, об приложении.
  • OK — пауза / продолжить.
  • OK hold — создать новую генерацию.
  • Up — ускорить симуляцию, в настройках выбрать пункт выше.
  • Down — замедлить симуляцию, в настройках выбрать пункт ниже.
  • OK в настройках мира — изменить выбранный параметр и пересоздать мир.
  • OK в настройках приложения — изменить скорость или прокрутку без пересоздания мира.
  • Back — выйти.

Структура кода

  • cell_lab_app.c — жизненный цикл приложения, ввод и подключение GUI.
  • cell_lab_world.c/.h — мир, геном, мутации, каннибализм, раздражители и шаг симуляции.
  • cell_lab_config.c/.h — изменяемые константы мира и расчет размера мира от размера клетки.
  • cell_lab_screens.c/.h — отрисовка мира, состояния, настроек мира, настроек приложения и about.
  • cell_lab_transition.c/.h — плавная горизонтальная прокрутка страниц; ее можно отключить в настройках.
  • cell_lab_common.h — общие enum, размеры экрана и маленькие утилиты.
  • cell_lab.png — 10x10 иконка приложения для FAP.

Сборка

Если установлен ufbt, из этой папки:

ufbt

Для сборки внутри flipperzero-firmware положи папку проекта в applications_user/cell_lab и запусти:

./fbt fap_cell_lab

About

A tiny pixel-world life simulator for Flipper Zero.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages