Как сделать судоку на юнити

Добавил пользователь Владимир З.
Обновлено: 04.10.2024

Я конвертирую свою игру судоку, написанную в WPF году, в Unity2D. Я все переделал. Однако я не могу достичь сетки 9*9 с кнопками, как это было в WPF.

В WPF году я создал 81 кнопку с тем же событием. Поэтому, когда он вызывается, я jsut получил свою позицию, отображаемую клавиатурой только с числами, которые разрешены ячейкой.

Вот что мне было нужно

28 вот что я сделал.

1: я вставил холст, а затем попробовал вертикальную компоновку (для добавления 3 строк) без успеха

2: Затем я попробовал макет сетки с холстом с фиксируемым столбцом подсчета без успеха

3: макет сетки с гибкой опцией по-прежнему не дает результата.

Я тоже пробовал через кодирование с помощью GUI.BOX, и все равно результат не очень хороший.

Как я могу это сделать?

1 ответ

Не используйте GridLayout , это только для фиксированного размера "icons" - здесь не имеет значения, не используйте.

Первое использование VerticalLayoutGroup

enter image description here

Не забывайте, что вы должны поставить LayoutElement на каждый из ваших трех предметов .

Сначала заставь это работать.

Затем для элемента MIDDLE добавьте горизонтальную группу и сделайте так, чтобы это сработало.

Похожие вопросы:

Мне нужна хорошая эвристическая функция для звезды для решения судоку. Сетка судоку имеет размер 4X4, и по определению законная операция из каждого штата состоит в том, чтобы вставить новое число в.

Поэтому я обновил свой проект до unity 5, но теперь ALL анимаций в проекте просто не работают . в чем проблема До обновления до unity 5 все работало нормально

Вступление Допустимая сетка судоку заполняется числами от 1 до 9, причем ни одно число не встречается более одного раза в каждом подблоке из 9, строки или столбца. Прочтите эту статью для получения.

Дело в том, что у меня папа очень любит одну японскую головоломку, а мне явно не хватало вдохновения и идеи, чего бы такого запрограммировать, поэтому после недолгих размышлений, я решил для папы написать свою реализацию судоку, а что из этого получилось, вы можете увидеть заглянув под кат этой статьи.

Итак, начнем с того, что такое судоку.

Судоку — это популярная японская головоломка, которая представляет собой цифровое поле 9 на 9 клеток, в котором уже поставлены некоторые цифры от 1 до 9. Также, внутри квадрата 9 на 9, есть разделение линиями на меньшие квадраты размером 3 на 3. Это разделение существует с одной стороны для облегчения решения головоломки, с другой стороны, оно является непосредственным элементом самих правил.

Вот так выглядит обычное поле для игры в судоку:

Правила судоку интуитивно просты и понятны: нужно заполнить все игровое поле цифрами от 1 до 9 таким образом, чтобы цифры в строке или столбце не повторялись, при этом также важен тот факт, что в квадратах 3 на 3, также не должно быть повторяющихся цифр. Поскольку, на поле уже присутствуют некоторые из цифр, то располагая этой информацией и необходимо поставить недостающие (согласно описанным правилам), и таким образом осуществить решение самой головоломки.

Теперь можно приступить к реализации задуманного…

Для построения судоку нам необходимо создать саму сетку и разместить в ней некоторым образом цифры, сгенерировав их абсолютно случайным образом:

Работают эти процедуры так: сначала с помощью процедуры grid, мы в окне программы просто чертим серую сетку из 81 квадрата (т.е. делаем обычное игровое поле, размером 9 на 9); затем с помощью процедуры square мы выделяем жирными черными линиями 9 квадратов размером 3 на 3 (т.е. разделяем игровое поле на несколько крупных квадратов, согласно правилам судоку); далее используя вспомогательную процедуру lremove для удаления из списка n-ого элемента реализуем необходимую нам далее процедуру r_str, которая формирует одну строку нашего судоку и которая пригодиться нам далее.

Теперь, начинается самое интересное: создание алгоритма построения судоку из одной строки случайно сгенерированных неповторяющихся цифр (вот зачем нам процедура r_str).

Алгоритм построения судоку после очень долгих раздумий получился таким: сначала мы берем строку случайных цифр, а затем создаем из нее 8 оставшихся строк с помощью сдвига самой строки на некоторые фиксированные значения сдвига вправо (данные значения были найдены в ходе долгих поисков по интернету и некоторых экспериментов), затем все 9 строк из цифр мы размещаем на игровом поле, после чего случайным образом стираем некоторое количество цифр (количество цифр определено экспериментально).

Реализация соответственно будет такой:

Также нам потребуется создание списка, который будет хранить решение головоломки, поэтому создаем глобальную переменную с пустым списком solv и создаем процедуру рисования всех 9 строк пока без удаления из них цифр:

Процедура удаления цифр также весьма проста:

Поскольку, пока существует сама судоку без стираний, легко определить процедуру отображения решения самой головоломки, сделав его отображение на основе существующих процедур, но в отдельном окне:

Если вспомнить наши предыдущие статьи по созданию всяких мелких игрушек на Icon, то процедуры осуществления хода и его отмены выглядят весьма банально, а изменяется только привязка к конкретным координатам в окне:

Объединим теперь все это в одну программу, собрав все процедуры и импорты в основную процедуру:

Итак, пользователь делает ход, щелкнув левой клавишей мыши по интересующей его клетке и осуществив вод нужной цифры, отмена хода осуществляется щелчком правой клавишей мыши по неправильно поставленной цифре (защита от дурака, к сожалению, не предусмотрена, поскольку писалось все, как говорится, на коленке); а отображение правильного решения осуществляется по нажатию клавиши s.

Это выглядит так:

Подводя итоги, скажу, что мой папа очень был доволен тем, что получил в свои руки классную минималистическую игрушку, за которой он может отдохнуть от работы, однако, для себя я вынес следующую мораль: не стоит писать код в таком стиле, даже если программа делается за один вечер, а необходимо детально вникнуть в проблему и создать качественный код, поскольку внезапно может выясниться, что исходник программы всплывает через несколько лет…

секреты прохождения судоку

В этом мире существует огромное количество различных головоломок и задач, которые помогут вам в развитии одного из важнейших органов — мозга. Разумеется, широко-известные японские головоломки судоку являются одними из них. С их помощью вы сможете изрядно “накачать извилины”, ведь помимо необходимости просчитывать огромное количество вариантов расположения чисел, вам также нужно уметь делать это на пару десятков ходов вперед. Одним словом, это настоящий рай, если вы хотите не дать своим нейронам “засохнуть”. И сегодня мы рассмотрим основные приемы, которые используют знатоки судоку. Это будет полезно как новичкам, так и давним фанатам этих головоломок. Ведь кому-то нужно сделать свои первые шаги в искусстве судоку, а кому-то повысить эффективность своих решений!

Правила

Если вы еще не знакомы с данным видом головоломок, то для начала вам стоит ознакомиться с правилами. Поверьте, они очень просты.

Игровое поле — это квадрат, который имеет размеры 9×9. При этом он разделен на меньшие квадраты с размерами 3×3. То есть, все поле состоит из 81 клетки.

Условие задачи — это те числа, которые уже расставлены в этих клетках.

Блок (блок ячеек) — малый квадрат, строка или строчка.

Что необходимо сделать: расставить все остальные цифры, соблюдая несколько правил. Во-первых, в каждом из маленьких квадратов не должно быть повторений. Во-вторых, во всех столбцах и строках также не должно быть повторений. То есть, каждое число должно встречаться лишь один раз в каждом из этих блоков. Для того, чтобы все стало еще понятнее, обратите внимание на решенный судоку:

Базовый способ решения

Как правило, если вы будете решать простые судоку, то все, что вам необходимо сделать — это расписать все возможные варианты для каждой из 81 клетки и постепенно вычеркивать неподходящие варианты. Это очень просто.

Но если вы перейдете на уровень выше, к более сложным судоку, то все становится интереснее. Часто будет так, что поставить новые цифры нет никакой возможности, и вам придется идти через предположения: “Пусть здесь стоит такое число”, после чего вам необходимо будет рассмотреть эту гипотезу и либо прийти к решению задачи, либо к противоречию своего предположения.

Но конечно, есть особые приемы, которые помогут делать все это более эффективно.

Приемы

1. Голые пары/тройки/четверки

Если у вас имеется две клетки в одном блоке (квадрат, строка или столбец), в которые можно поставить лишь 2 цифры, то очевидно, что эти цифры можно убрать из возможных вариантов для других клеток данного блока.

Судоку - прохождение пример

Более такого, такой трюк можно легко проделать и с тройками, и с четверками:

Судоку - прохождение пример

Судоку - прохождение пример

Судоку - прохождение пример

Судоку - прохождение пример

2. Скрытые пары

Очень полезный прием, в некотором роде, обратный голым парам. Если в каких-то двух клетках одного квадрата в “возможных вариантах” у вас есть цифры, которые больше нигде не повторяются (в рамках этого квадрата), то все остальные цифры из этих двух клеток можно убрать.

Для того, чтобы стало еще понятнее, обратите внимание на примеры (один простой и посложнее):

Судоку - прохождение пример

Судоку - прохождение пример

К счастью, это работает и для троек, и для четверок, но стоит упомянуть очень важную и очень крутую фишку. Не обязательно, чтобы в трех/четырех ячейках были одинаковые 3 цифры вида (a;b;c) (a;b;c) (a;b;c). Вам будет достаточно такого варианта: (a;b) (b;c) (a;c).

Судоку - прохождение пример

Судоку - прохождение пример

Судоку - прохождение пример

3. Безымянное правило

Если у вас есть пара или тройка в одном столбце/строке, которые при этом располагаются в одном квадрате, можете смело убрать эти цифры из других ячеек данного квадрата.

4. Указывающие пары

Если в одной строке/столбце в “возможных вариантах” есть две одинаковые цифры, то такие цифры можно убрать из соответствующего столбца/строки.

Временами это бывает очень полезно, особенно, если вы найдете несколько таких пар:

Судоку - прохождение пример

Судоку - прохождение пример

Конечно, при этом данные цифры должны отсутствовать в других ячейках квадрата, но согласно безымянному правилу, это не требуется.

Любите судоку и другие загадки, игры, головоломки и тесты, направленные на развитие различные аспектов мышления? Получите неограниченный доступ ко всем интерактивным материалам на сайте, чтобы развиваться эффективнее.

Заключение

Мы рассмотрели основные приемы, которые используются при решении судоку. Отмечу, что это лишь начало и в следующих статьях мы рассмотрим более сложные и более интересные фишки, благодаря которым решение таких задач станет еще интереснее и проще.

В качестве тренировки редакция 4brain предлагает вам ознакомиться с файлом, в котором содержатся судоку различного уровня сложности. Не пожалейте времени на тренировки, поскольку если вы уделите этому занятию достаточно времени, то в конце данного курса статей, поверьте мне, вы станете настоящим асом в решении японских головоломок.

Если у вас есть какие-то вопросы по данным методикам или же по судоку, которые мы прикладываем к статье, можете смело задавать их в комментариях!

Судоку – популярная числовая головоломка родом из Японии. Это один из самых популярных видов досуга современных людей всех возрастов. Правильно составленный классический судоку может иметь только одно решение, а сам алгоритм составления не так сложен, как кажется на первый взгляд.

Как составить судоку

Составление судоку – не менее интересное занятие, чем их решение. Тем более что вариантов классической головоломки может быть очень много. Под классической подразумевается разновидность судоку в виде большого квадрата 9х9 цифр, разделенного на маленькие квадраты 3х3.

Для того чтобы получился новый судоку, достаточно переставить местами две большие строки и два столбца. Например, поменяйте местами первую и третью большие строки:345 678 912678 912 345912 345 678234 567 891567 891 234891 234 567123 456 789456 789 123789 123 456

Переставьте первый и второй большие столбцы:678 345 912912 678 345345 912 678567 234 891891 567 234234 891 567456 123 789789 456 123123 789 456

Усложните получившийся судоку способом перестановки обычных строк или столбцов. Это можно делать только внутри больших колонок таблицы, поскольку иначе нарушится правило судоку: в каждом из 9 квадратов головоломки каждая цифра встречается только 1 раз.

Запишите в первой большой строке вторую обычную на месте третьей и наоборот, во второй строке поменяйте первую обычную с третьей, а в третьей большой строке – первую со второй:678 345 912345 912 678912 678 345234 891 567891 567 234567 234 891789 456 123456 123 789123 789 456

Первоначальный вариант уже не узнать. Теперь поменяйте тем же образом обычные столбцы внутри больших. Например, в первой большой колонке замените первый столбец на второй, во второй – первый на третий, и в третьей колонке – второй столбец на третий:768 543 912435 219 678192 876 345324 198 567981 765 234657 432 891879 654 123546 321 789213 987 456

Можете делать любые манипуляции, главное - соблюдать правило: переставлять как большие, так и обычные элементы таблицы можно только полностью. Удобнее всего составлять судоку в компьютерной программе, например, в Miscrosoft Excel. Там можно проверить себя после всех перемещений и замен, просчитав сумму каждой строки, столбца или маленького квадрата. Она должна составлять 45. Для этой цели в программе предусмотрены макросы и формулы.

Теперь самое интересное: удаление лишних цифр. В зависимости от того, какой сложности вы хотите добиться, уберите из получившейся таблицы от 30 до 70% цифр.

Не знаю, кому поможет эта фигня. Лично мне не помогла. Я рассчитывал, что мне действительно расскажут принципы составления задач с единственно возможным вариантом решения, а тут! Тасовка блоков. Для загонки чисел в матрицу, я знаю способ попроще и поинтереснее.
Судоку разделено на 9 блоков, числа в каждом блоке не повторяются. Поэтому заполняем три случайных блока случайным образом, соблюдая, естественно, правила судоку. Теперь заполняем остальные блоки тоже случайным образом и тоже соблюдая правила судоку. Таким образом у нас получится весьма оригинальная матрица. Мало того, заполняя таким способом матрицу мы можем расположить числа так, как нам будет угодно, а не "как получится", если делать перестановку.

Читайте также: