Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр
Решайте головоломки три в ряд и отправляйтесь в приключение! Проходите красочные уровни и открывайте новые главы захватывающей истории о мышонке и его друзьях!

Мышонок Шон

Казуальные, Три в ряд, Головоломки

Играть

Топ прошлой недели

  • Rahlkan Rahlkan 1 пост
  • Tannhauser9 Tannhauser9 4 поста
  • alex.carrier alex.carrier 5 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая кнопку «Подписаться на рассылку», я соглашаюсь с Правилами Пикабу и даю согласие на обработку персональных данных.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
0 просмотренных постов скрыто
7
MrCreativeMan
MrCreativeMan
2 года назад

Игра "Жизнь" (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

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

Показать полностью 1
[моё] Игры Игра жизнь Разработка Веб-разработка Javascript Математика Conways Game of Life Gamedev Инди игра Инди Длиннопост
1
131
Vladimir98
Vladimir98
6 лет назад
Лига образования

Моделируем жизнь⁠⁠

В прошлый раз я писал о простой модели жизни. Кратко напомню правила. «Вселенная» состоит из клеток, в которых может быть жизнь. У каждой клетки есть 8 соседей. С каждым промежутком времени исполняются следующие правила:

1. Если у живой клетки меньше 2 соседей, она умирает от одиночества

2. Если у живой клетки 2 или 3 соседа, она продолжает жить

3. Если у клетки более 3 соседей, она умирает от перенаселения

4. Если у неживой клетки ровно 3 соседа, происходит размножение и клетка становится живой

Получившаяся модель поражает своей живостью и непредсказуемостью! Играть с ней — одно удовольствие

Моделируем жизнь Жизнь, Программирование, Компьютер, Conways game of Life, Игры, Человек наук, Наука, Гифка, Длиннопост

Но всё же, рано или поздно возникает ощущение, что это не очень напоминает реальную жизнь. Ведь настоящие организмы ведут себя не так! На поле постоянно остаются стабильные квадраты или палки, переворачивающиеся с боку на бок. Что такое эти квадраты, динозавры, превратившиеся в нефть? Геологи бы такое не одобрили

Моделируем жизнь Жизнь, Программирование, Компьютер, Conways game of Life, Игры, Человек наук, Наука, Гифка, Длиннопост

Возникает желание добавить в систему правил. Это я и сделал! Самой первой мыслью было добавить клеткам возраст. Например:

1. Если в неживой клетке возникает жизнь, её возраст становится равным 0

2. Если живая клетка остаётся живой на следующий ход, к её возрасту прибавляется 1

3. Если возраст клетки больше 8, она теряет репродуктивную функцию (не считается соседом неживых клеток), но тратит ресурсы (считается соседом живых клеток) и может вызвать смерть от перенаселения

4. Если возраст клетки превышает 10, она умирает

За такой системой наблюдать стало гораздо интереснее:

Моделируем жизнь Жизнь, Программирование, Компьютер, Conways game of Life, Игры, Человек наук, Наука, Гифка, Длиннопост

Добавление олдфагов, правда, не пошло на пользу Пикабу, но его жизнь стала куда более захватывающей! Квадраты из клеток одинакового возраста теперь не могут существовать: они стареют вместе и очень романтично погибают в один день. Палки также погибают из-за стареющего центрального элемента

Моделируем жизнь Жизнь, Программирование, Компьютер, Conways game of Life, Игры, Человек наук, Наука, Гифка, Длиннопост

Зато в такой системе возникают новые существа! Классический планер в ней также может существовать, но для жизни вот такой структуры нужны правила, включающие старение:

Моделируем жизнь Жизнь, Программирование, Компьютер, Conways game of Life, Игры, Человек наук, Наука, Гифка, Длиннопост

В классических правилах это существо симметрично и обречено на скучную судьбу. Здесь же за счёт старого краевого элемента, который скоро умрёт, симметрия нарушается. А затем существо воспроизводит себя, но уже немного в другом месте

Особенно мне нравится вот этот момент. Он как будто говорит «О да, я двигаюсь»

Моделируем жизнь Жизнь, Программирование, Компьютер, Conways game of Life, Игры, Человек наук, Наука, Гифка, Длиннопост

А вот ещё более крутая осциллирующая структура:

Моделируем жизнь Жизнь, Программирование, Компьютер, Conways game of Life, Игры, Человек наук, Наука, Гифка, Длиннопост

Она превращается в кучу мусора в обычных правилах, но здесь за счёт отмирания частей позади, движется туда-сюда бесконечно!

Кстати, если здесь есть знакомые с теорией автоматов люди, подскажите, описывал ли кто-нибудь такие правила?

Можно также ограничить репродуктивный возраст снизу, добавив «детство». Тогда живая клетка должна будет «подрасти», прежде чем сможет давать потомство. Но это очень агрессивные условия, которые быстро приводят к вымиранию. Классические движущиеся структуры становятся невозможны: они двигаются именно за счёт рождения новых клеток сбоку. А здесь оказывается, что новые клетки бесполезны, пока не подрастут

Моделируем жизнь Жизнь, Программирование, Компьютер, Conways game of Life, Игры, Человек наук, Наука, Гифка, Длиннопост

Единственное интересное, что мне удалось получить с такими правилами — это вот такой осциллирующий квадрат. Заметьте, насколько он стал круче по сравнению с обычным стабильным квадратом! Теперь это не просто кусок останков жизни, а действительно живая ячейка общества, цепляющаяся за жизнь изо всех сил

Моделируем жизнь Жизнь, Программирование, Компьютер, Conways game of Life, Игры, Человек наук, Наука, Гифка, Длиннопост

Вот так заставив клетки умирать, я сделал их более живыми. Вы можете поиграть с жизнью самостоятельно. По сравнению с прошлой версией я добавил ещё несколько фишек:

1. Увеличил размер Вселенной и добавил возможность выбрать длину стороны клетки в 2 пикселя. Выбирайте этот пункт на свой страх и риск, так как я не сильно беспокоился о производительности :)

2. Можно выбирать режим старения и настраивать его, как вам нравится. При самостоятельном рисовании клеток один клик добавит 1 к возрасту клетки, 2 клика — сотрут её

3. Можно добавить случайность. Тогда каждая клетка будет иметь шанс случайно поменять состояние на противоположное


Пишите в комментариях, что интересного у вас получилось :)

Моделируем жизнь Жизнь, Программирование, Компьютер, Conways game of Life, Игры, Человек наук, Наука, Гифка, Длиннопост

Моя группа ВК и телеграм-канал

Показать полностью 9
[моё] Жизнь Программирование Компьютер Conways game of Life Игры Человек наук Наука Гифка Длиннопост
33
1131
Vladimir98
Vladimir98
6 лет назад
Лига образования

Программируем жизнь⁠⁠

Представьте себе двумерную вселенную, состоящую из клеток (как в школьной тетради). Некоторые клетки закрашены — тогда мы говорим, что в них есть жизнь. У каждой клетки есть 8 клеток-соседей

Программируем жизнь Программирование, Наука, Математика, Игра жизнь, Conways game of Life, Человек наук, Гифка, Длиннопост

Введём некоторые правила для нашей жизни:

1. Если у живой клетки меньше 2 соседей, она умирает от одиночества

2. Если у живой клетки 2 или 3 соседа, она продолжает жить

3. Если у клетки более 3 соседей, она умирает от перенаселения

4. Если у неживой клетки ровно 3 соседа, происходит размножение и клетка становится живой

Может ли в такой простой системе возникнуть что-то похожее на столь сложный процесс, как жизнь? Оказывается, может

Программируем жизнь Программирование, Наука, Математика, Игра жизнь, Conways game of Life, Человек наук, Гифка, Длиннопост

Cистема поражает своей непредсказуемостью. Клетки постоянно рождаются и умирают, количество живых клеток то возрастает, то убывает. Иногда через какое-то количество шагов поле остаётся пустым, иногда на нём остаются стабильные структуры, а порой нечто «живое» остаётся в игре очень долго или навсегда

Примеры «существ»

Представьте, квадрат из 4 клеток на поле

Программируем жизнь Программирование, Наука, Математика, Игра жизнь, Conways game of Life, Человек наук, Гифка, Длиннопост

У каждой клетки квадрата ровно 3 соседа. У клеток по краям — максимум по 2. Это значит, что каждая клетка квадрата будет продолжать жить, а рядом не будут рождаться новые. Такая структура будет существовать на поле вечно!


Но это совсем неинтересно, жизнь ведёт себя не так. У нас получилось что-то вроде окаменелости. Интереснее себя ведёт палка 1 на 3

Программируем жизнь Программирование, Наука, Математика, Игра жизнь, Conways game of Life, Человек наук, Гифка, Длиннопост

У её центрального элемента 2 соседа, поэтому он остаётся живым. Элементы на краях погибают от одиночества, соседствуя лишь с центром. Зато с другой стороны от центра у мёртвых клеток имеется 3 соседа, поэтому они становятся живыми! Так это существо продолжает жить, переворачиваясь с боку на бок каждый ход

Существуют ещё более крутые конструкции, например, пульсар:

Программируем жизнь Программирование, Наука, Математика, Игра жизнь, Conways game of Life, Человек наук, Гифка, Длиннопост

Но больше всего впечатляют движущиеся элементы! Они повторяют себя, но уже не на том же месте, а немного смещаясь. Например, планер:

Программируем жизнь Программирование, Наука, Математика, Игра жизнь, Conways game of Life, Человек наук, Гифка, Длиннопост

Или даже космический корабль:

Программируем жизнь Программирование, Наука, Математика, Игра жизнь, Conways game of Life, Человек наук, Гифка, Длиннопост

Если вас это ещё недостаточно впечатляет, то посмотрите на планерное ружьё Госпера:

Программируем жизнь Программирование, Наука, Математика, Игра жизнь, Conways game of Life, Человек наук, Гифка, Длиннопост

Это стабильная структура, которая постоянно порождает новые двигающиеся планеры! И это уже действительно напоминает что-то живое. Построить ружьё Госпера можно так:

Программируем жизнь Программирование, Наука, Математика, Игра жизнь, Conways game of Life, Человек наук, Гифка, Длиннопост

Зачем?

Программируем жизнь Программирование, Наука, Математика, Игра жизнь, Conways game of Life, Человек наук, Гифка, Длиннопост

Эта модель называется Игра «Жизнь» Конвея. Её изобрёл британский математик Джон Конвей в 1970 году. До этого известнейший физик Джон фон Нейман предложил нечто похожее. Во времена космической гонки он думал, как колонизировать Марс. Поверхность красной планеты состоит из оксида железа — соединения кислорода и металла!

Программируем жизнь Программирование, Наука, Математика, Игра жизнь, Conways game of Life, Человек наук, Гифка, Длиннопост

Фон Нейман предложил создать роботов, которые бы высадились на поверхность планеты и начали расщеплять материал у себя под ногами на кислород и железо. Кислород бы заполнил атмосферу для будущих колонизаторов, а из железа роботы бы делали свои собственные копии!

Взгляните на такую ситуацию сверху: робот занимает какую-то площадь и производит свои копии, распространяющиеся по бокам. Очень напоминает двумерную Вселенную из нашей модели! Но модель фон Неймана была гораздо сложнее: каждый робот там имел до 20 состояний. Предсказать поведение такой системы невероятно сложно

Программируем жизнь Программирование, Наука, Математика, Игра жизнь, Conways game of Life, Человек наук, Гифка, Длиннопост

Конвей упростил модель фон Неймана до той, что описана в начале поста. Тем не менее, из таких простых правил всё равно рождаются очень сложные, непредсказуемые структуры. Почти никогда нельзя предсказать, вымрет ли система или стабилизируется и за сколько шагов это произойдёт. Эта простая модель очень помогла развитию таких наук, как математика и программирование, и даже биология с химией

Но что будет если всё же добавить сложности в эту модель? Может быть, сделать клеткам возраст, чтобы они умирали, если долго не изменяются, или сделать клетки шестиугольными, а не квадратными? Пишите свои идеи в комментариях, а я попробую их реализовать :)

Также можете поиграть с моделью самостоятельно. Можно заполнить поле случайным образом, изменить масштаб или нарисовать какую-либо фигуру самостоятельно. Пишите, что интересного у вас получилось!

Программируем жизнь Программирование, Наука, Математика, Игра жизнь, Conways game of Life, Человек наук, Гифка, Длиннопост

Моя группа ВК

Показать полностью 13
[моё] Программирование Наука Математика Игра жизнь Conways game of Life Человек наук Гифка Длиннопост
126
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии