Топлю за UI, даже в 1с
Создал обработку по вдохновению из Сборника задач про разработке на платформе 1С:Предприятие Павла Чистова. Доступных решений в интернете не так много, а всё, что есть, пользовательски не юзабилити ни разу.
Из реализованного:
1. учет ошибок
2. учет времени
3. учет прохождения (процент правильно заполненной сетки)
4. возможность отмены последнего введенного значения поля
5. возможность очистки поля введенными пользователем числами после начала игры
6. подсказки
7. возможность сдаться
8. возможность решить (заполнить) сетку в форме игры
9. пауза/продолжить в игре
10. подсветка строки/столбца/блока/поля при неверно введеном значении
В самой игре 4 формы: основное поле, форма поражения, победы и форма "Сдаться". Также есть форма решателя.
Также реализован (криво, но все же) алгоритм решения любой сетки судоку (логическими методами + поиском в глубину (DFS))
Все правила игры соблюдены - вариант заполнения поля числами только один, сетка всегда имеет решение, в столбцах, строках, блоках нет повторений.
Как пользоваться: при открытии будет выдана подсказка - нажмите Начать игру, соответственно руководствуемся подсказкой и запускаем сие машину. После заполнения сетки судоку можно либо ее решить, либо сдаться, а можно решать, ошибиться и проиграть - на это 3 ошибки. Опцию "СчитатьОшибки" можно выключить и тогда проиграть вы не сможете. В панели на 4 странице есть кнопка входа в форму солвера, где можно самому задать значения для полей и нажав на кнопку заполнения попытаться заполнить сетку.
Алгоритм логический - работает по принципу поиска "одиночек" и однозначного расставления значения по строка, столбцам и блокам, другая логика не рассмотрена.
Алгоритм поиска в глубину - стандартный DFS, графы, ветви и т.д. Сработает всегда (если есть решение), но иногда придется подождать.
Для того чтобы сократить время решения алгоритмы объединены: сначала выполняется логический, затем в глубину. Уровень "Сложный" в популярных играх на мобиле решает секунд за 20-30, уровень "Эксперт" может крутить минуту, но может и больше.
ВАЖНО! Режим модальности выставьте - Использовать, либо в процедуре "Решить" главной формы удалите блок с РежимВопросОтвет.
Разрабатывалась на 8.3.18.1289, работает в обычных формах, теперь и на управляемых!
Обработки будут допиливаться для оптимизации и красоты кода.
upd 1.0 - строка прохождения и учета ошибок теперь состоит только из одной надписи (было один реквизит и две надписи), размеры картинок стали одинаковыми для всех
upd 2.0 - скорость загрузки игры стала быстрее раза в 2-3, для незаполненных полей реализованы подсказки при наведении (доступные поля для ввода), некоторая часть кода была переписана, исправлены ошибки
upd 3.0 - добавлена обработка игры на Управляемых формах (УФ такая жесть)
Все писал в модуле формы, с модулем объекта хз как правильно работать и есть ли разница здесь вызывать НаСервере или в модуле все обрабатывать