如何防止阻塞路径?

时间:2014-11-06 22:21:01

标签: c++

我正在尝试构建算法,以阻止"阻塞路径"。我绘制随机迭代并在地图上打印: enter image description here enter image description here [...] enter image description here

" x"是球员。它可以在这张地图上移动,但不能留在这个地图上#34;#"领域。绘制后路径被阻止(" x"无法移动到,例如",(3,2):

enter image description here

有人有想法,概念或材料如何编写防止绘制的算法"#"当它阻挡路径?

这是我的代码:

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函数。

1 个答案:

答案 0 :(得分:4)

您可以执行flood fill以确定哪个方格可以从给定的起始位置到达。从the Wikipedia article

中查看此动画

或者,如果您想确定是否可以从另一个方格到达一个方格,请使用pathfinding算法,例如A*。同样,来自Wikipedia的动画:

enter image description here