У магазині додатків iOS у мене найпопулярніша гра Судоку. Ось як я генерував пазли.
Спочатку у мене є додаток для генератора головоломок. Але це не є частиною коду гри. Це окремий додаток, який я використовую для створення пазлів. Він дуже модифікований, тому я можу встановити його для створення різних типів шаблонів, рейтингів складності, кількості подарунків і т. Д. Створення загадок і отримання стійкого рівня складності важко зробити на льоту і займає більше часу, ніж гравець хотів би чекати. Отже, я генерую те, що я називаю "насінні пазли", і саме це використовується кодом гри для створення загадок, які грають люди.
Я не відповідаю, як тут кодувати генератор. Ви можете знайти Google і знайти в Інтернеті тонни генератора головоломки. Почніть з цього. Але для того, щоб зробити хорошу гру, потрібно зробити хорошу гру. Моя гра не створює головоломок на льоту.
Те, як працює мій додаток-генератор головоломок, полягає в тому, що він генерує тисячі головоломок за хвилину, але вони не всі хороші і не всі відповідають певній оцінці складності. Генератор створює головоломку, потім розв’язує її і визначає оцінку складності, і визначає головоломку на основі методик, необхідних для вирішення головоломки, і визначає, чи потрібні здогадки для її розв’язання (що зазвичай погано). Він викидає головоломки, які не відповідають критеріям. Для важких, але не неможливих головоломок на швидкій машині може знадобитися година, щоб сформувати 100 головоломок, які відповідають моїм точним характеристикам. Ось чому я цього не роблю в додатку. Створення головоломок на ходу з тими жорсткими характеристиками не допоможе для якості головоломок, які я маю в своєму додатку.
Загадки - це рядки, довжиною 162 символи, 81 символ із цифрами та тиреми або крапками, де будуть пробіли, а потім ще 81 з рішенням. Потім стовпці для кожної статистики, наприклад, кількість синглів, парних і т.д.
Мій висновок з усіх сеансів генерації - це рядки з обмеженими комами та статистикою у вигляді стовпців. Я візьму, можливо, 10 000 головоломок, докладу їх до успіху та розберу по складності. Потім введіть їх у додаток, щоб побачити їх на ігровій дошці. Я також розглядаю їх на предмет зорової привабливості та видимих зразків головоломки. Тоді я вручну вибираю з них.
Я називаю їх насінними загадками, і ось що я маю на увазі. Цифри в грі в судоку насправді просто лексеми. Замість числа 1-9 вони можуть бути кольорами, символами чи літерами. Тож мої насінні пазли - це не цифри, це букви аї. Кожна головоломка з насінням змінюється на льоту, щоб скласти грати головоломку:
- Рандомізуйте числа / жетони. Коли я повертаю літери ai назад до цифр 1-9, таблиця пошуку рандомізована. Це означає, що це не завжди 1. Саме по собі створюється близько 300 000 варіацій для кожної головоломки.
- Обертайте пазл на 90, 180 або 270 градусів. Це додає ще 4 варіанти.
- Розмовляйте головоломку горизонтально, вертикально або обидва. Це додає ще 4 варіанти.
Кожна головоломка насіння може, таким чином, створити 5 806 080 варіацій. Я випробував це на полі з реальними гравцями. Люди не знають, що вони по суті грають одну і ту ж головоломку. Насправді це неможливо. Тільки якби вони помітили, що візерунок, у якому є подарунки, щоразу однаковий. Але навіть з 100 різними насінням ніхто не помітить. Мільйон користувачів моєї гри ще ні. Я також тестував це з програмами solver. Додаток, що розв’язує, не вирішить головоломку так само, коли вона повертається чи перевертається. Він навіть іноді аналізуватиме його як інший рейтинг складності, хоча технічно це та сама головоломка.
Однак у книзі Big Bad Sudoku є 10-ти з 1000-х насіннєвих головоломок у 5 рівнях складності та декілька типів пазлів. Це означає, що в моїй грі є мільярди головоломок. На кожні 10 000 загадок насіння є 58 060 800 000 різних головоломок.
У Судоку Книзі версії 4 (вийшов у 2016 році) я з'ясував спосіб визначити точну головоломку з тих 58 мільярдів і отримати ту саму головоломку на пристрої кожного гравця.