Гра «життя», Хаос, «чорний лебідь», етногенез і як все це пов'язано

image
 
Я досить давно на Хабре. Переглядаючи старі рейтинги зауважив, що люди небайдужі до гри «життя». У зв'язку з цим вирішив поділитися своєю версією цієї гри.
 
В принципі, мій варіант грунтується тільки на класичних правилах — мені було цікаво створити динамічну систему. Через це в грі пресутствуют хижаки і жертви, мутації, тварини-людоїди, динамічні рівняння і ще багато всякої всячини.
 
 image
 
Кому цікаво прошу під кат…
 
 

Гра

Гра імітує відносини хижаки-жертви.
 
Життєвий цикл жертв Підстав на правилах гри «життя»: для розмноження потрібна певна кількість сусідів, але якщо число сусідів більше, ніж визначено, то клітина-жертва вмирає. Смерть остаточна.
 
Життєвий цикл клітини-хижака Підстав тільки на можливості відтворюватися. Хижакам можна і потрібно їсти для того, щоб розмножуватися.
 
Всі істоти мають початкові параметри, які можуть мутувати (збільшуватися, зменшуватися) в процесі розмноження. На даний момент є тільки:
 
• життєвий пріоритет (харчування, безпека, відособленість = самотність, розмноження) — сратегія поведінки особини — визначає наступний хід;
• сила — впливає на шанс одного істоти здобути перемогу над іншим (актуально тільки для клітин-хижаків);
• зір — визначає максимальну відстань, на яке істота може бачити (поле зору);
• швидкість — визначає максимальну відстань, яку істота може подолати за один хід;
• життя — кількість ходів;
• чи є клітина «Чорним лебедем» (Black Swan ) — «Чорний лебідь» істота, пересування якого визначається динамічної формулою (& quot; Chaos Theory & quot;). Всі істоти того ж виду, «хто бачити» «чорного лебедя» прагнуть до нього (життєві пріоритети при цьому ролі не грають) — це дає додатковий рівень рандомизации;
• «людоїдство» (актуально тільки для клітин-хижаків) — здатність харчуватися особинами обох видів (що б з'їсти істота того ж виду клітина -людожера повинна спочатку отримати над ним перемогу).
 
Для кожної істоти значення параметрів визначаються randomly при народженні.
 
Всі племена хижаків знаходяться в стані війни або миру, що визначається рандомально. Якщо дві особини з ворогуючих племен зустрічаються на одній клітці, то вони вступають в бій, результат якого залежить від значення сили. Таким чином, за допомогою вікна статистики можна дивитися за їх розвитком або загасанням.
 
  
 

Позначення

Зелений трикутник (нижній в клітці) — жертва;
Червоний трикутник (верхній в клітці) — мисливець;
Синій трикутник (правий в клітці) — спадкоємець мисливця в нинішньому ходу;
Чорний трикутник (лівий / нижній в клітці) — чорний лебідь мисливець / жертва.
 
Буду радий, якщо читачі поділяться своїми ідеями, як можна розширити існуючий функціонал? Що ще було б цікаво просімуліровать?
  
 

Управління

Щоб розмістити плем'я хижаків: затискаємо праву кнопку миші на поле і ведемо в будь-яку сторону — з'являється червоний ореол, що визначає гаусіан (Gauss distribution ) распростараненія племені.
Якщо в цей же час покриття коліщатко мишки, то можна збільшити / зменшити дисперсію розповсюдження.
Щоб розмістити плем'я клітин-жертв, затискаємо ліву кнопку миші на поле і ведемо в будь-яку сторону — з'являється зелений ореол.
 
 image
 
Додаткову інформацію можна знайти під кнопкою «Допомога».
 
Статистику можна дізнатися нажа в на кнопку «Run Time Info»
 
Код писався коли тільки-тільки вийшов з ++ 0х і було цікаво розібратися з лямбда виразами, а так само подивитися, наскільки їх використання реально поліпшує performance.
 
Джерела і виконуваний файл можна завантажити звідси: Game Of Life Repo

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.