Sudoku на Unity. Часть 1.
Всегда любил играть в судоку 6х6, 9х9, 9х9 с неправильными ячейками.
И вот решил создать эту игру в Unity с генерацией уровней, так как решил что эта задача будет интересной.
Начну с простого. Создам генерацию сетки с границами больших ячеек (на стандартной доске судоку 9х9 81 малая ячейка, и 9 больших ячеек). Я хочу сделать код универсальным, мало ли я захочу добавить судоку 5х5 например.
1 скрипт Form, можно будет создавать несколько вариантов судоку 6х6, 9х9 и т.д., и запускать любую при желании.
bigCellIds - если size 6, то размер массива будет 36 (то есть все малые ячейки) и хранить он будет id большой ячейки, позже все поймете.
2 скрипт FormEditor, для удобного создания Form в инспекторе
Вот как это выглядит в инспекторе
Теперь нужно что бы другие системы считывали эти данные и строили сетку с границами больших ячеек.
3 скрипт Params, хранит статические данные
ThickMeshSize - толщина границы между большими ячейками в пикселях
4 скрипт ThickMesh, задает размер и позицию толстой границы
5 скрипт Board строит сетку на основе данных из Form
BuildThickMesh() - создает толстую границу
BuildThinMesh() - создает тонкую границу, которая между малыми ячейками.
BuildExternalThickMesh() - создает 4 длинных линии по краям поля(сверху, снизу, слева, справа)
BuildInternalThickMesh() - создает короткие линии между 2мя разными большими ячейками. Внутри цикла берется ячейка и сравнивается bigCellIds с ячейкой правее и ячейкой ниже. Если bigCellIds не совпадают, то между этими ячейками строится граница.
6 скрипт GameGenerator, запускает генерацию уровня.
Видео как все настроить в Unity и демонстрация построения поля на основе данных с Form