Я работаю над игрой, в которой у вас есть сетка 8x12, где каждая ячейка имеет одинаковый размер и все ячейки находятся рядом друг с другом.
Вы перетаскиваете различные формы, похожие на тетрисы, и размещаете их на сетке в допустимых местах, причем допустимым местоположением является то, где все ячейки, которые будет занимать форма, не заняты какой-либо другой формой.
Моя проблема в том, что я не уверен, как искать в сетке допустимые местоположения. Я искал алгоритм, который решит такую проблему, но я дошел до сих пор с пустыми руками. Кажется, что определить действительные местоположения довольно просто, но я не смог найти удачное решение.
Любые процессы, предложения алгоритмов или идеи о том, как решить эту проблему, были бы чрезвычайно полезны. Спасибо!
EDIT:
Вот ожидаемая функциональность: когда фигура находится в допустимом местоположении, ее можно свободно перетаскивать между действительными местоположениями и следовать за указателем мыши. Однако при попытке перетащить фигуру в недопустимую область (т. Е. Перемещение в указанном направлении приведет к тому, что один или несколько блоков фигуры окажутся в недопустимых местах), она останется в последнем допустимом месте.
В этот момент, когда мышь находится в недопустимой области, я хочу сделать «предсказательное» движение, чтобы, если игрок перемещает курсор мыши около допустимой позиции, фигура «защелкивается» на месте, скажем, если действительная позиция в двух ячейках сетки.
Спасибо за ваше предложение; Я не думал об этом методе!