Игра «Жизнь» (англ. Conway's Game of Life) — клеточный автомат, придуманный английским математиком Джоном Конвеем в 1970 году.

Моя реализация данного алгоритма в программе "Life".

Технические характеристики:

Последняя стабильная Release-версия: 1.9.0.0 от 11/01/2021
Продукт написан на С++, GUI на WinAPI.

Основные параметры:
1. Размер игрового поля 2^32 на +2^32 клеток (рамка примерно 4,3*4,3 млрд. клеток) - поле закольцовано по X, Y координатам.
2. Масштаб от 32 пикселей - одна клетка, до 1 млр. клеток на один пиксель (можно загрузить целиком самый большой космический корабль "Gemini", размером рамки в 4 млн. клеток, посмотреть в подробностях - по ссылке есть загрузочный шаблон в архиве и даже увидеть всю игровую вселенную на экране)
3. Замедление хода в мс.(микросекунда=1/1000 сек.)
4. Шаг поколений. В один ход (ход - отрисовка инфо на экране) рассчитываем указанное количество поколений. Параметр нужен для того, что бы посмотреть динамику жизни при скорости выше 60-65 поколений в секунду. Предполагаю, потому как, WinAPI (WM_PAINT) не может отрисовать более 60Гц в секунду (частота обновления экрана).
5. Быстрая отрисовка в WinAPI через CreateDIBSection, с прямым доступом через DIB к битам Bitmap (следующий этап - Dirext3D, пока в разработке).
6. Кнопка "Начало координат" - перемещение в начало координат (левая верхняя точка пользовательского окна - координаты: 0.0). Работает при расчете жизни. Если вдруг потерялись  Эта же позиция отрисовывается при запуске программы и при создании нового поля. Загрузка всех шаблонов происходит тоже в начало координат.
7. "Инфо.панель" - информация о настройках, игровом поле.
8. "Показать ареал" - показать весь ареал (клетки, где была и есть жизнь) на экране.
9. "Автомасштаб" - автомасштабирование ареала до размеров экрана.
10. "Ареал по живым" - сужения ареала только до живых клеток.
11. Чтение и запись формата RLEформаты

12. Рисуем/Удаляем левой кнопкой
13. Таскаем холст - правой
14. Масштабирование - колесико мышки

 

В комбинации "Автомасштаб" и "Ареал по живым" дают интересный эффект - можно смотреть движение одиночных фигур в пространстве, к примеру космические корабли (для более качественного просмотра, можно замедлить движение, см.п.3).

В архиве, прилагаю для теста, несколько простых шаблонов в формате RLE

В моем блоге на www.cyberforum.ru

Программа распространяется бесплатно.

Исходники выложил в Репозиторий: https://github.com/bedvit/Life

 

    Запуск  ("p416 60P5H2V0 gun") (27 тыс. живых клеток) в программе Life(v1.9.0.0)

Яндекс.Метрика