{"id":17246920,"url":"https://github.com/i-redbyte/life-game","last_synced_at":"2025-04-14T05:32:05.728Z","repository":{"id":219512807,"uuid":"749229791","full_name":"i-redbyte/life-game","owner":"i-redbyte","description":null,"archived":false,"fork":false,"pushed_at":"2024-09-12T23:28:15.000Z","size":10175,"stargazers_count":15,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-27T19:51:46.583Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/i-redbyte.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-01-28T00:03:39.000Z","updated_at":"2024-09-17T21:53:31.000Z","dependencies_parsed_at":"2024-02-20T15:58:19.285Z","dependency_job_id":"d015d4a1-bb41-48c6-b05a-98647d834e73","html_url":"https://github.com/i-redbyte/life-game","commit_stats":null,"previous_names":["i-redbyte/genom","i-redbyte/life-game"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/i-redbyte%2Flife-game","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/i-redbyte%2Flife-game/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/i-redbyte%2Flife-game/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/i-redbyte%2Flife-game/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/i-redbyte","download_url":"https://codeload.github.com/i-redbyte/life-game/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248826752,"owners_count":21167737,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-15T06:35:28.800Z","updated_at":"2025-04-14T05:32:05.163Z","avatar_url":"https://github.com/i-redbyte.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# Игра Жизнь\n| ![Стартовый экран](misc/startScreen.png) | ![Меню правил](misc/menuOfRules.png) |\n|:---------------------------------------:|:-----------------------------------:|\n| Стартовый экран                         | Меню правил                         |\n\n**Игра Жизнь** — это реализация [знаменитого](https://ru.wikipedia.org/wiki/%D0%98%D0%B3%D1%80%D0%B0_%C2%AB%D0%96%D0%B8%D0%B7%D0%BD%D1%8C%C2%BB) клеточного автомата Джона Конвея на языке Kotlin. Проект включает две версии игры: одну с использованием **OpenGL** для работы с графикой низкого уровня, и другую с использованием **Jetpack Compose**. В этой игре поддерживаются различные модификации правил, что позволяет варьировать поведение клеток и экспериментировать с их эволюцией.\n\n## Особенности\n- **Две версии игры**:\n    - **OpenGL**\n    - **Jetpack Compose**:\n\n| \u003cimg src=\"misc/composeVersion.gif\" alt=\"Compose version\" width=\"300\" height=\"480\"/\u003e | \u003cimg src=\"misc/2dVersion.gif\" alt=\"OpenGL version\" width=\"300\" height=\"480\"/\u003e |\n|:-----------------------------------------------------------------------------------:|:-----------------------------------------------------------------------------:|\n|                                   Compose version                                   |                                OpenGL version                                 |\n\n  \n- **Поддержка различных правил** для изменения логики поведения клеток.\n- **Высокая производительность** благодаря оптимальной работе с игровым полем через представление его в виде битовых последовательностей.\n\n## Игровое поле\n\nИгровое поле представлено классом `GameBoard`. В основе его работы лежит `CellMatrix` — список целых чисел (`Long`), где каждый бит представляет состояние клетки: живая или мёртвая.\n\n### Основные функции `GameBoard`\n\n- **Инициализация поля**: клетки случайным образом заполняются исходя из начальных настроек игры.\n- **Обновление состояния клеток**: для каждой клетки проверяется количество соседей, и на основе заданного правила определяется, останется ли клетка живой или умрет.\n- **Подсчет соседей**: для каждой клетки можно подсчитать количество живых соседей, учитывая восемь возможных направлений.\n- **Оптимизация**: управление состояниями клеток на основе битовых операций, что позволяет работать с большим количеством клеток эффективно.\n\n\n### Пример работы с битами\n\nДля управления состоянием клеток используются битовые операции. \n\n## Правила игры\n\nПравила игры определяют, будет ли клетка живой или мертвой в следующем поколении, в зависимости от её текущего состояния и числа живых соседей.]\n\nНекоторые из доступных правил:\n\n- **ClassicRule** — классические правила Конвея.\n- **DayAndNightRule** — клетки остаются живыми или возрождаются при 3, 6, 7 или 8 соседях.\n- **HighLifeRule** — добавляет возможность возрождения клетки при 6 соседях.\n- **ReplicatorRule** — клетки остаются живыми, если у них нечётное количество соседей.\n- **MorleyRule** — клетки остаются живыми при 2, 4 или 5 соседях, а возрождаются при 3 или 6 соседях.\n- **TwoByTwoRule** — клетки остаются живыми при 1, 2 или 5 соседях, а возрождаются при 3 или 6 соседях.\n- **DiamoebaRule** — клетки остаются живыми при 5-8 соседях, а возрождаются при 3, 5, 6 или 7 соседях.\n- **LifeWithoutDeathRule** — клетки остаются живыми навсегда или возрождаются при 3 соседях.\n- **SeedsRule** — клетки могут возродиться только при 2 соседях, но никогда не остаются живыми на следующем ходу.\n\n## Установка\n1. Вы можете скачать последнюю релизную версию по этой [ссылке](https://github.com/i-redbyte/life-game/releases).\n\n2.1. Склонируйте репозиторий:\n\n   ```bash\n   git clone https://github.com/i-redbyte/life-game.git\n   ```\n\n2.2. Откройте проект в Android Studio и синхронизируйте зависимости.\n\n2.3. Запустите приложение на эмуляторе или физическом устройстве.\n\n## Вклад в проект\n\nВы можете предлагать улучшения, исправления или добавлять новые правила, создавая pull request или открывая issue.\n\n## Лицензия\n\nЭтот проект распространяется по лицензии MIT. Подробности смотрите в файле [LICENSE](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fi-redbyte%2Flife-game","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fi-redbyte%2Flife-game","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fi-redbyte%2Flife-game/lists"}