Игра «Жизнь» — клеточный автомат, придуманный английским математиком Джоном Конвеем в 1970 году. Это игра без игроков, в которой человек создаёт начальное состояние, а потом лишь наблюдает за её развитием.
Правила: 1) Место действия игры — размеченная на клетки плоскость, которая может быть безграничной, ограниченной или замкнутой. 2) Каждая клетка на этой поверхности имеет восемь соседей, окружающих её, и может находиться в двух состояниях: быть «живой» (заполненной) или «мёртвой» (пустой). 3) Распределение живых клеток в начале игры называется первым поколением. Каждое следующее поколение рассчитывается на основе предыдущего по таким правилам: в пустой (мёртвой) клетке, с которой соседствуют три живые клетки, зарождается жизнь, и, если у живой клетки есть две или три живые соседки, то эта клетка продолжает жить; в противном случае (если живых соседей меньше двух или больше трёх) клетка умирает («от одиночества» или «от перенаселённости»). 4) Игра прекращается, если на поле не останется ни одной «живой» клетки; конфигурация на очередном шаге в точности (без сдвигов и поворотов) повторит себя же на одном из более ранних шагов (складывается периодическая конфигурация) при очередном шаге ни одна из клеток не меняет своего состояния.
Игрок не принимает активного участия в игре. Он лишь расставляет или генерирует начальную конфигурацию «живых» клеток, которые затем изменяются согласно правилам. Несмотря на простоту правил, в игре может возникать огромное разнообразие форм.
В нашей реализации игры есть клеточное поле размером 30х30 и удобный интерфейс, позволяющий нажатием кнопки мышки выбрать живые клетки. Кнопка “Start” запускает функцию определения соседей из модуля “model”, запуская клеточный автомат. Кнопка “Pause” позволяет остановить работу клеточного автомата на определенной конфигурации. Кнопка “Stop” останавливает игру, закрывая окно. Кнопка “Save” записывает координаты конфигурации, находящейся на экране, в файл output.yaml. Нажатие клавиши “delete” стирает все живые клетки с экрана, а нажатие на клавишу “стрелка вправо” совершает одну итерацию клеточного автомата. Конфигурация клеток, появляющихся на экране при запуске программы, считывается из файла input.yaml. Параметры клеточного автомата (такие как количество клеток cell_number, время одной итерации speed) считываются из файла config.yaml. Для демонстрации работы также присутствуют файлы с интересными начальными конфигурациями: clock.yaml, pulsar.yaml, wheat.yaml. Для запуска их содержимое нужно скопировать в input.yaml
Функционал выбора клетки нажатием мыши, а также “стрелка вправо” работают только при НАЖАТОЙ кнопке “Pause”, чтобы не мешать работе основного клеточного автомата.
Описание
Правила игры: «Жизнь» разыгрывается на бесконечном клеточном поле. У каждой клетки 8 соседних клеток. В каждой клетке может жить существо. Существо с двумя или тремя соседями выживает в следующем поколении, иначе погибает от одиночества или перенаселённости. В пустой клетке с тремя соседями в следующем поколении рождается существо.