Как удвоить размер сетки 8х8 при сохранении относительного положения некоторых плиток в неизменном виде? - PullRequest
0 голосов
/ 26 апреля 2010

У меня размер сетки 8х8, всего 64 плитки.

Я использую эту сетку для реализации алгоритмов поиска Java, таких как BFS и DFS.

Сетка предоставила запрещенные тайлы (то есть они не могут быть пройдены или соседями по какой-либо другой плитке), а также плитку цели и старта. например, плитка 19,20,21,22 and 35, 52 запрещена, а 14 an 43 - плитка Goal и start при запуске программы.

Мой вопрос: как я могу удвоить размер сетки, до 16x16, сохранив при этом Relative position of forbidden tiles и Relative position of start and goal Tiles без изменений?

Простым объявлением массива grid[16][16] запрещенные плитки и плитки целей и стартов больше не находятся в относительных позициях, как в сетке размером 8x8.

На бумаге я знаю, что могу сделать это, добавив 4 rows and columns to all sides, но в терминах кодирования я не знаю, как заставить это работать? Может кто-нибудь дать какие-нибудь подсказки?

Ответы [ 2 ]

0 голосов
/ 26 апреля 2010

Что-то простое может заключаться в том, чтобы поместить элемент в (i, j) в старой сетке в (2i, 2j) в новую ... относительные положения плиток будут сохранены ...

0 голосов
/ 26 апреля 2010

Размеры массивов в Java не изменяются, вам нужно выделить новый массив с требуемым измерением и скопировать в него данные.

Например, если вы хотите, чтобы старая карта находилась в центре новой:

Tile[][] newMap = new Tile[16][16];

for (int i=0; i<8; i++)
  for (int j=0; j<8; j++) 
    newMap[i+4][j+4] = oldMap[i][j];

Но вам все равно придется инициализировать другие плитки другим.

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