Учитывая набор плиток на сетке, я хочу определить:
- Если плитки делают вложенную фигуру
- Если плитки образуют замкнутую фигуру, когда вы считаете стороны доски краем фигуры
- Если любое из двух предыдущих утверждений истинно, то какие дополнительные листы попадают в прилагаемую фигуру, то образуются исходные листы.
Игрок начнет с того, что нажмет одну плитку, а затем проведет пальцем по другой плитке, чтобы создать цепочку плиток одного цвета. Пока я иду, я проверю, действительна ли следующая плитка. Ex. Если игрок начинает с красной плитки, его единственным следующим действительным ходом является смежная красная плитка (диагонали действительно учитываются). Когда пользователь поднимает палец, я должен иметь возможность проверить 3 пункта выше.
Поэтому моя первоначальная мысль заключалась в том, что, поскольку я проверял правильность цепочки каждый раз, когда игрок шел, когда игрок поднял палец, я мог проверить, были ли первые и последние плитки соседними. (Я уже знаю, что они одного цвета.) Если бы они были рядом, у меня была догадка, что я сделал закрытую фигуру, и я собирался прийти сюда, чтобы попытаться выяснить, упустил ли я что-то большое, и получить какое-то логическое / математическое доказательство того, что моя догадка была верной (или пример, доказывающий, что это неверно).
Но вот когда я подумал о пункте 2: я также должен учитывать цепочки, которые используют край доски в качестве стороны прилагаемой фигуры. В этом случае первый и последний элементы в цепочке не будут смежными, но у меня все равно будет приложенная фигура. Так что теперь я немного вернулась на круги своя.
Что я могу сделать с этой цепочкой координат сетки, чтобы выяснить, составляют ли они прилагаемую фигуру или нет? И однажды я действительно знаю , что есть прилагаемая фигура, что это лучший способ , чтобы получить дополнительный список всех плиток , которые попадают в ее пределах?
Выше я нарисовал картинки того, что, я ожидаю, могут быть 4 возможных результата этого теста.
Цепочка не образует вложенную фигуру.
Цепочка делает замкнутую фигуру.
Если вы посчитаете стороны доски как ребро (или более чем одно ребро) фигуры, цепочка образует замкнутую фигуру.
Цепочка создает замкнутую фигуру, но есть дополнительные точки данных (правильно выбранные пользователем как часть цепочки), которые не являются частью создаваемой фигуры.
Случай 4 самый хитрый, потому что вам нужно извлечь «лишние» звенья цепи, чтобы найти прилагаемую фигуру и кусочки, которые попадают внутрь нее (но не вокруг «незакрытой» области).
Итак ... У кого-нибудь есть идея, как решить эту проблему, или это просто отправная точка для меня? Я как бы хожу по кругу в этот момент и могу использовать другой набор глаз.