В поисках места для фигуры на сетке - PullRequest
1 голос
/ 03 июня 2011

Я работаю над игрой, в которой у вас есть сетка 8x12, где каждая ячейка имеет одинаковый размер и все ячейки находятся рядом друг с другом.

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

Моя проблема в том, что я не уверен, как искать в сетке допустимые местоположения. Я искал алгоритм, который решит такую ​​проблему, но я дошел до сих пор с пустыми руками. Кажется, что определить действительные местоположения довольно просто, но я не смог найти удачное решение.

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

EDIT:

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

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

Спасибо за ваше предложение; Я не думал об этом методе!

1 Ответ

1 голос
/ 03 июня 2011

Как описано, алгоритм будет довольно простым.Произвольно выберите начальный блок на вашей фигуре и попытайтесь сопоставить его с каждой открытой ячейкой сетки.Если «рисование» фигуры с выравниванием блока по текущей ячейке не вызывает столкновения, вы нашли правильное положение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...