Игра "Жизнь" (Game of Life) или "Жизнь внутри жизни"

[TL;DR]: вот ссылка, пока! :)

Штош... я зачем-то написал свою реализацию игры "Жизнь" с использованием вот этих странных букаф: HTML5 + CSS3 + JavaScript и решил явить сиё творение этому миру :)

Игра "Жизнь" (Game of Life) или "Жизнь внутри жизни" Игры, Игра жизнь, Разработка, Веб-разработка, Javascript, Математика, Conways Game of Life, Gamedev, Инди игра, Инди, Длиннопост

Ну что вы, полноте, не нужно аплодисментов и бурных оваций, спасибо!

А теперь серьезно (местами).

Пара слов (но это не точно) об игре

(для тех, кто доселе о ней не слыхал [wat.jpg] или тех, кто о ней что-то знает, но просто очень сильно хочет еще эти предложения для чего-то почитать)

Игра "Жизнь" (Game of Life) — это с виду простенькая игра про жизнь, где в качестве живых существ (или небольших площадей, заселенных жизнью) выступают элементарные клетки (обычно квадратные, т. е. просто квадратики), закрашенные в определенный цвет [к слову, в моей реализации живые клетки окрашены синим], а в качестве мира, в котором они живут — игровое поле, представляющее собой сетку, состоящую из множества квадратиков, каждый из которых может быть либо живым (заполненным, населенным), либо мёртвым (пустым, ненаселенным).

Жизнь в Game of Life протекает по заданным правилам, которые в далеком 1970 году придумал английский математик Джон КОнвей [John Horton Conway, создатель вышеупомянутой игры, представляющей собой к тому же математическую/физическую/теоретикобиологическую концепцию, известную как клеточный автомат]. Эти правила известны как B3/S23 (Born 3 — в пустой клетке зарождается жизнь при наличии вокруг нее трех живых соседних клеток, Survive 2,3 — клетка выживает, если рядом с ней соседствуют 2 или 3 живые клетки).

Игрок принимает активное участие в задании начального расположения живых клеток на поле (начальный паттерн), а также имеет возможность запускать/приостанавливать игру, выполнять ее пошагово (и, вообще говоря, производить любые другие дополнительные действия, которые зависят от конкретной реализации игры, будь то рандомная генерация расположения клеток на поле или загрузка заранее заданного паттерна, или возможность/запрет добавления новых клеток в уже запущенной игре [или даже возможность сделать этот выбор настраиваемым], или управление скоростью игры за счет добавления задержки перед отрисовкой следующего хода, или что угодно еще из того, что придет в голову человеку, имеющему доступ к коду игры и/или способному так или иначе реализовать свою идею)...

На каждом этапе жизни (ходу или, другими словами, в каждом поколении клеток) любая из живых клеток либо продолжает жить (остается окрашенной в цвет живой клетки), либо умирает (окрашивается в другой цвет, символизирующий отсутствие жизни или пустоту [к примеру, белый или черный, или какой-угодно другой в зависимости от реализации]).

Каждая клетка продолжает жить, если среди 8 окружающих ее соседних клеток (для клеток, находящихся на краях поля в качестве отсутствующих соседних обычно берутся клетки с противоположного края [зависит от реализации]) есть живые соседи, при условии, что этих самых соседей не больше трёх и не меньше двух, иначе клетка умирает (от "перенаселения" или от "одиночества").

В пустой клетке, которую окружают три живые соседки, зарождается жизнь.

Игра заканчивается, если на поле не осталось живых клеток, или если игровой паттерн (узор расположения клеток) на каком-то ходу повторился, то есть полностью совпал с любым из паттернов предыдущих ходов.

Игра довольно проста в управлении

(во всяком случае для меня в моей же собственной реализации, т. к. ее код я сам и писал, в конце-то концов, но если без рофлов, то можно разобраться и без пол литра даже ежу, несмотря на то, что игра на английском [а что... там слова короче!])

Исходный код стоит чисто символические $50.000, переводить мне на карту в порядке живой очереди, спасибо. Ну, а если серьезно, то код полностью открыт (open source, Unlicense license) и доступен для каждого желающего на моей страничке github абсолютно без-воз-мез-дно, то есть даром... а еще без смс и регистрации, так, на всякий случай...

Так что можете смело:

- скачивать исходники игры

- играть (в github-репозитории в файле README.ru-RU.md есть инструкция как запустить игру для тех, кто не знает)

- смотреть код, пытаться понять код, ковырять его (переписывать по своему), проклинать код, крутить и вертеть код игры на чем угодно, но только в пределах разумного :) — в общем делать с кодом все то, что там с ним еще обычно делают...

- создавать свои собственные версии игры, взяв за основу (при желании) мою реализацию, и предварительно написав, на всякий случай, трогательное прощальное письмо своему собственному мозгу.

В конце концов, вы можете просто использовать ее как рисовалку (пикселями) в свободное от чего бы то ни было время [при его наличии] :)

Feedback

Несмотря на всю мою ленивую человеческую природу, которую я периодически с переменным успехом пытаюсь преодолевать, приветствуются любые предложения, касающиеся этой реализации игры (например, по улучшению, по добавлению новых фич), которые можно:

- писать прямо сюда в комменты;

- создавать в виде issues на github (не парьтесь насчет правильности создания issue [корректно заполненные поля и прочая дребедень], просто создайте как-нибудь, описав свое предложение простыми словами, думаю я разберусь, а вот насчет ваших pull-реквестов в мой репозиторий — простите, но сразу нет: постоянно [или пусть даже периодически] изучать и принимать неизвестные мне pull-реквесты в своем репозитории я не имею ни малейшего желания, поэтому вместо этого смело форкайте мой репозиторий к себе на github или просто клонируйте/качайте код и изменяйте его как вашей душе угодно).

Если вам несказанно повезет (сойдутся все звезды, я увижу ваше сообщение, правильно его пойму, мне понравится предложенная вами идея и мне будет не лень и под силу ее реализовать), то с высокой долей вероятности я (не) добавлю ее реализацию в свой никому не нужный репозиторий (вау, вот это достижение).

Также (не)приветствуется критика (поливать говном желательно обоснованно и по возможности равномерно, чтоб красивее смотрелось).

Тут и сказочке конец. Кто прослушал - всем П...ц :0

Постскриптум: это мой первый пост на пикаЧу, поэтому смело судите все написанное мной по всей строгости здешних законов (не байт на плюсы, а просьба, честно, да).