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

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

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

Последняя стабильная Release-версия: 1.9.0.0 от 11/01/2021
Продукт написан на С++, GUI на WinAPI. Данные версии продуктов - распространяются бесплатно.
Открытый исходный код на: https://github.com/bedvit/Life

 


Основные параметры:
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

 

 

 

 

 

 

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

Life

p416 60P5H2V0 gun is a period 416 gun that was constructed by Dave Greene on April 11, 2003 to fire copies of the 60P5H2V0 spaceship. It consists of 64 period 416 glider guns driving 60 Herschel-based glider inserters to produce four construction salvos totalling 63 gliders. It was constructed independently (though using the same glider synthesis) of the similar p690 60P5H2V0 gun.

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