Мини-симулятор жизни для 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