我在大学里有这个分配,我得到了一个涉及寻路的C ++游戏的代码。使用波函数进行寻路,并且分配要求我对寻路工作的方式做出一定的改变。
该分配要求寻路始终选择距离除空白区域以外的任何物体最远的路径。如下所示:
这是我到目前为止得到的结果:
下面我发布了有关路径查找的更新功能部分,因为我很确定这是我需要进行更改的地方。
for (int y = 0, o = 0; y < LEVEL_HEIGHT; y++) {
for (int x = 0; x < LEVEL_WIDTH; x++, o++) {
int nCost = !bricks[o].type;
if (nCost) {
for (int j = 0; j < 4; j++)
{
int dx = s_directions[j][0], dy = s_directions[j][1];
if ((y == 0 && dy < 0)
|| (y == LEVEL_HEIGHT - 1 && dy > 0)
|| (x == 0 && dx < 0)
|| (x == LEVEL_WIDTH - 1 && dx > 0)
|| bricks[o + dy * LEVEL_WIDTH + dx].type)
{
nCost = 2;
break;
}
}
}
pfWayCost[o] = (float)nCost;
}
}
如果需要进一步明确问题,还需要Wave function。
我非常感谢任何关于如何继续的想法,因为我已经在这方面苦苦挣扎了很长一段时间。
答案 0 :(得分:0)
您的问题可以简化为minimum-bottle-neck-spanning-tree。
对于减少,请执行以下操作:
对于具有4个单元的一维空间,成本为10,20,3,5:
|10|20|3|5|
图表看起来像:
A--(w=10)--B--(w=20)--C--(w=3)--D--(w=5)--E
节点A-E对应于单元格的边界。