Стартовый экран | Меню правил |
Игра Жизнь — это реализация знаменитого клеточного автомата Джона Конвея на языке Kotlin. Проект включает две версии игры: одну с использованием OpenGL для работы с графикой низкого уровня, и другую с использованием Jetpack Compose. В этой игре поддерживаются различные модификации правил, что позволяет варьировать поведение клеток и экспериментировать с их эволюцией.
- Две версии игры:
- OpenGL
- Jetpack Compose:
Compose version | OpenGL version |
- Поддержка различных правил для изменения логики поведения клеток.
- Высокая производительность благодаря оптимальной работе с игровым полем через представление его в виде битовых последовательностей.
Игровое поле представлено классом GameBoard
. В основе его работы лежит CellMatrix
— список целых чисел (Long
), где каждый бит представляет состояние клетки: живая или мёртвая.
- Инициализация поля: клетки случайным образом заполняются исходя из начальных настроек игры.
- Обновление состояния клеток: для каждой клетки проверяется количество соседей, и на основе заданного правила определяется, останется ли клетка живой или умрет.
- Подсчет соседей: для каждой клетки можно подсчитать количество живых соседей, учитывая восемь возможных направлений.
- Оптимизация: управление состояниями клеток на основе битовых операций, что позволяет работать с большим количеством клеток эффективно.
Для управления состоянием клеток используются битовые операции.
Правила игры определяют, будет ли клетка живой или мертвой в следующем поколении, в зависимости от её текущего состояния и числа живых соседей.]
Некоторые из доступных правил:
- ClassicRule — классические правила Конвея.
- DayAndNightRule — клетки остаются живыми или возрождаются при 3, 6, 7 или 8 соседях.
- HighLifeRule — добавляет возможность возрождения клетки при 6 соседях.
- ReplicatorRule — клетки остаются живыми, если у них нечётное количество соседей.
- MorleyRule — клетки остаются живыми при 2, 4 или 5 соседях, а возрождаются при 3 или 6 соседях.
- TwoByTwoRule — клетки остаются живыми при 1, 2 или 5 соседях, а возрождаются при 3 или 6 соседях.
- DiamoebaRule — клетки остаются живыми при 5-8 соседях, а возрождаются при 3, 5, 6 или 7 соседях.
- LifeWithoutDeathRule — клетки остаются живыми навсегда или возрождаются при 3 соседях.
- SeedsRule — клетки могут возродиться только при 2 соседях, но никогда не остаются живыми на следующем ходу.
- Вы можете скачать последнюю релизную версию по этой ссылке.
2.1. Склонируйте репозиторий:
git clone https://github.com/i-redbyte/life-game.git
2.2. Откройте проект в Android Studio и синхронизируйте зависимости.
2.3. Запустите приложение на эмуляторе или физическом устройстве.
Вы можете предлагать улучшения, исправления или добавлять новые правила, создавая pull request или открывая issue.
Этот проект распространяется по лицензии MIT. Подробности смотрите в файле LICENSE.