У Льоні сьогодні

Сапер: відображення ймовірності


Окрім того, тепер ще й складність можна міняти

Перше, що я хотів додати у звичайного “Сапера” - це обчислення та відображення ймовірності мін. Бо просто цікаво роздивитись, а ще з цього можна зробити режим підказки або авторозвʼязувач.

Ймовірність — не така проста річ, як здається, та алгоритм її обчислення, власне, і являє собою розвʼязок гри. Тому треба було почати з основ.

  • Ймовірність кожної комірки на полі можна обчислити як частку від ділення кількості мін на кількість ще не відкритих комірок. Ну, це не тільки просто, але й не цікаво — хоч можна поспостерігати, як вона змінюється за ходом розкриття поля.

  • Далі можна зробити теж саме, але біля кожної цифри на краю: кількість невідмічених мін поділити на кількість невідкритих комірок. Різні цифри можуть давати різну ймовірність: беремо максимальну з тих, що знаємо.

  • Але є особливий випадок: якщо навколо деякої цифри вже не залишилось мін, то ймовірність ще не відкритих комірок стає 0. Такий нуль має пріоритет над іншими значеннями.

  • На цей час це вся логіка, хоча можна йти й далі. Власне, вже з таким набором евристик можна розвʼязувати нескладні ігри. (До речі, ще одна ідея на майбутнє: роздивитись ймовірність виграшу в залежності від кількості мін.)

(Ще настав час додати вибір складності. На жаль, на маленьких екранах поки немає щастя, бо flex, який я використовую для центрування, псує прокрутку, коли зміст не влазить в екран.)