четвер, 21 липня 2022 р.

Манкала-ігри. Калах

 Як і обицяв, продовжу розповідати про мої ігри сімейства манкала.

Перша гра, яку я реалізував - це калах. Цей вариант придумав в середині XX сторіччя американець Вільям Чемпіон і назвав "калах", натякаючи, що гра походить з пустелі Калахарі. Можливо, завдяки своєму походженю, цей варіант ианкали є найбільш відомим у Західному світі. Фактично, калах є більш простим варіантом гри чонгкак (колись я зроблю і цю гру).

Правила гри доволі прості:

  1. На дошці для калах з кожного боку є 6 невеликих лунок, які називаються будиночками; і велика лунка, яка називається кінцевою зоною або коморою, або манкалою, на кожному кінці. Мета гри - захопити більше зерен насіння (камінців), ніж у опонента.
  2. На початку гри чотири (п’ять або шість) зерен насіння розміщуються в кожній лункці. Кожен гравець керує шістьма лунками та їх насінням на стороні гравця на дошці. Рахунок гравця — це кількість зерен насіння в його коморі.
  3. Гравці по черзі сіють своє насіння. У свій хід гравець видаляє всі зерна насіння з однієї з підконтрольних йому лунок. Рухаючись проти годинникової стрілки, гравець по черзі скидає по одному зернятку в кожну лунку, включаючи власну комору гравця, але не його суперника.
  4. Якщо останнє посіяне зернятко потрапляє в комору гравця, він отримує додатковий хід. Кількість ходів, які гравець може зробити у свою чергу, не обмежена.
  5. Якщо останнє посіяне зернятко потрапляє в порожню лунку, що належить гравцеві, а в протилежній лунці є насіння, і останнє, і протилежні зерна захоплюються і поміщаються в комору гравця.
  6. Коли один із гравців більше не має насіння в жодній зі своїх лунок, гра закінчується. Інший гравець переміщує все насіння, що залишилося, до своєї комори, і виграє той, у кого найбільше насіння.

Вперше  я дізнався про цю гру з додатка до журнал "Юный техник".

Картинка з журнала ЮТ

Дошку я зробив з пенопласту, а в якості кацінців використовував шарики з підшипника, що мені приніс батько.  
Згодом я намагався запрограмувати цю гру на калькуляторі МК-61. 


Лістинг першої версії мобільного калаха

Хоча в моєму розпоряджені було лише 105 кроків для программи, інколи вона в мене навіть вигравала.

Нещодавно я зробив нову версію, вже для Android (оскільки сумніваюсь, що у багато кого досі є МК-61): https://play.google.com/store/apps/details?id=org.xbasoft.mancala

Грати можна як проти бота (з трьома рівнями складності), так і против людини, як локально, так і онлайн.

Удачі!


понеділок, 18 липня 2022 р.

Манкала - найдавніша жива настільна гра

 За свою історію людство вигадало багато настільних ігор. Найбільш відомі у Західному світі - шашки та шахи. У Східному - го та рендзю (а ще нарди). Якщо ж замислитись, а яка з ігор є найдавнішою, то можна згадати, наприклад, гру міста Ур, або давноєгипетські "Пси та шакали".  Але справа в тому, що ми не знаємо правил цих ігор. Так, вони були реконструйовані, але ми не можемо напевно стверджувати,  що ці нові правила співпадають з оригінальними.

Однак, вже кілька тисячоліть існує гра, яка не тільки вельми популярна й в наш час, але й для якої час від часу вигадують нові варианти. Ця гра - манкала. Точніше, це сімейство ігор зі схожими правилами, які розповсюджені в основному в Африці та Південно-Східний Азії. Деякі з них, як казахський тогыз кумалак (або киргизський тогуз коргоол - ці країни досі сперечаються, кому має належити ця гра) включені навіть у список нематеріальної спадщини ЮНЕСКО (як і наш борщ).

Основна ідея ігор манкала полянаяє в наступному. У кожного гравця на полі є ряд ямок або лунок. Можуть бути також специальні лунки - комори. На початку гри в лунки кладуть певну кількість камінців, або зерняток. Дошки для гри можуть робитися з дерева і прикрашатися різбленням (як дошки для нард). А які-небудь пастухи можуть просто викопати ямки в землі і грати козячими какашками. Таким чином, манакала - це не тількі найдавніша настільна гра, а й найдавніша напідложна гра. 

Початкова позиція гри.


Дошка для гри в вари (oware).


Одна з найдавніших досок для так званної трирядної манкали - з трьома рядками лунок. А є ще й чотирирядні. (всі фото взяти з wikipedia) 

У свій хід гравець бере всі камінці (а може й не камінці)  з будь-якої своєї лунки і родить так званий посів - послідовно (але не тому, що янукович) розкладає камінці у інші лунки.  Наприкінці хода іноді може бути виконаний захват, коли гравець переміщує частину
своїх камінців и камінців суперника у свою комору. Мета гра - зібрати у своїй коморі більше камінців (зерняток), ніж суперник. Таким чином, якщо шахи, або го моделюють війну, то калах - процес землеробства. В деяких іграх навіть є так зване правило "голоду".

Існує достатньо багато реалізацій манкал для смартфонів та комп'ютерів. Зі свого боку, я досить давно вже хотів зробити  свій вариант. Оскільки всі існуючи мають свої недоліки. Наприклад, більшість з мобільних версій працюють в ландшафтній орієнтації, а мені більш подобається портретна. Під час гри важливо знати кількість камінців у лунках не лише перед своїм ходом (що більшість програм показує), але й після. А я доволі лінивий і хотів би, щоб смартфон сам за мене все обчіслював. До того ж, варіанті манкал існує кілька десятків, є навіть манкали-пасьянси, А існуючі програми реалізують лише 2-3 найпоширенеших. Тому я вирішив зробити свою версію мобільної манкали. Точніше, першу версію мобільної манкали я зробив ще десь у 1991 або 1992 р. Настав час зробити новий реліз. Прості правила доволі легко запрограмувати. Для штучного інтелекту реалізація мінімаксного алгоритму буде досить простою. Для оцінки позиції можна буде використовувати кількість камінців в коморах (коли я робив п'ятипольне коно найскладнішою задачею було придумати самє функцію оцінки позиції).     

Також я напишу кілька статей про кожний реалізований варіант гри.

Наразі я релізував один з вариантив гри - калах. Розповім про нього завтра чи після завтра. Поки що можна подивитись маленьке відео:


Або встановити на Android щоб пограти: https://play.google.com/store/apps/details?id=org.xbasoft.mancala (правила додаються).

Або пограти з браузера: https://xvadim.github.io/xbasoft/mancala_ua.html