我的网格尺寸为8x8,总共64个瓷砖。
我正在使用此网格来实现Java搜索算法,例如BFS和DFS。
Grid已经给出了禁止的Tiles(意味着它们不能被遍历或者是任何其他tile的邻居)以及Goal和Start tile。例如,当程序运行时,Tile 19,20,21,22 and 35, 52
被禁止, 14 an 43
是Goal
和start
Tile。
我的问题是,如何将网格的大小加倍,16x16
同时保持Relative position of forbidden tiles
以及Relative position of start and goal Tiles
完好无损?
通过简单地声明一个grid[16][16]
禁止图块的数组,目标和起始图块不再处于相对位置,因为它们的网格大小为8x8。
在纸面上,我知道我可以通过添加4 rows and columns to all sides
来实现这一点,但在编码方面,我不知道如何使其工作?有人可以提供任何提示吗?
答案 0 :(得分:0)
数组在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];
但你仍然需要将其他瓷砖初始化为其他东西。
答案 1 :(得分:0)
一些简单的事情可能是将元素放在(i,j)旧网格中(2i,2j)中的新元素......将保留瓷砖的相对位置......