我正在尝试构建防止“阻塞路径”的算法。我随机绘制项目并将其打印在 map 上: [...]
“x”是玩家。它可以在此 map 上移动,但不能停留在“#”字段上。绘制后路径被阻塞(“x”不能移动到,例如,“(3,2)”:
有人有想法、概念或 Material 如何编写算法来防止在阻塞路径时绘制“#”?
这是我的一段代码:
void build_dungeon(MAP_GRID& map, int chance, string object)
{
int i, j;
for (i = 0; i < g_map_size; i++){
for (j = 0; j < g_map_size; j++){
if (rand() % 100 >= (100 - chance) && map[i][j] == "[ ]" && anti_stuck(map, i, j)){
map[i][j] = object;
print_map(map);
}
}
}
}
我正在尝试编写 anti_stuck 函数。
最佳答案
您可以执行 flood fill以确定从给定的起始位置可以到达哪些方 block 。从the Wikipedia article看这个动画:
或者,如果您想确定是否可以从另一个方格到达一个方格,请使用 pathfinding算法如 A* .同样,来自 Wikipedia 的动画:
关于c++ - 如何防止阻塞路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26790496/