Игра «Жизнь» (Game of Life) — клеточный автомат, придуманный английским программистом Джоном Конвеем в 1970 году. Наверное, по популярности среди программистов игра Жизнь занимает второе место после программы «Привет Мир!».
Место действия моей игры — «чашка Петри» — это размеченный на клетки прямоугольник. По периметру прямоугольника расположены пустые клетки. Они во время игры не меняются и на экране не отображаются. Каждая клетка на этой поверхности может находиться в двух состояниях: быть «живой» 1 или быть «мёртвой» 0 – пустой.
Клетка имеет восемь соседей, окружающих её. Распределение живых клеток в начале игры называется первым поколением. Каждое следующее поколение рассчитывается на основе предыдущего по правилам. Клетка жива ровно 1 поколение. Если у клетки имеется ровно 2 соседа, в клетке появляется жизнь. Более двух клеток не приносят плодов из-за перенаселённости.
Игра заканчивается когда умирают все клетки или ситуация на поле повторяется, что не всегда бывает просто определить.
Схема подключения LED дисплея SSD1306 I2C очень простая, поэтому её здесь не привожу. У дисплея всего 4 вывода, из них 2 питание от 3,3 до 5 Вольт. Подключите вывод SDA на плате дисплея к выводу A4, а вывод SCK к выводу A5 на плате Arduino. Будем использовать аппаратный I2C интерфейс микроконтроллера ATMega 328 со стандартной для среды Arduino IDE библиотекой Whare.
Рис. 2. Программа для игры Жизнь.
В 1940-х годах известный программист Джон фон Нейман создал гипотетическую машину, которая может воспроизводить сама себя. Математическая модель машины фон Неймана получилась с очень сложными правилами. Конвей упростил идеи, предложенные Нейманом, и создал правила, которые стали правилами игры «Жизнь».
Играть в «Жизнь» можно на поле любого размера, на поле свёрнутом в трубочку или в тор. Могут быть различные начальные условия. Разные правила рождения. Одно правило остаётся неизменным – следующие поколения ничего не знают о предыдущих.