c++ - 如何防止阻塞路径?

标签 c++

我正在尝试构建防止“阻塞路径”的算法。我随机绘制项目并将其打印在 map 上: enter image description here enter image description here [...] enter image description here

“x”是玩家。它可以在此 map 上移动,但不能停留在“#”字段上。绘制后路径被阻塞(“x”不能移动到,例如,“(3,2)”:

enter image description here

有人有想法、概念或 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 的动画:

enter image description here

关于c++ - 如何防止阻塞路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26790496/

相关文章:

c++ - 如何查找元素是否存在于元组中?

c++ - 在函数内计算数组大小?

c++ - 当我声明字符串数组时,C++ 如何计算偏移地址

c++ - 如何使用 C++ 获取计算机的专有名称 (DN)

c++ - 如何仅打印完整路径名的文件部分?

c++ - 在析构函数中要破坏什么,不要破坏什么

c++ - 根据条件和优先级搜索容器中的项目

c++ - 为什么 QDir::rmdir 不是静态的?

python - 在 python 源代码中使用 __cplusplus

c++ - 原子和 std::mutex 的成本是否会影响我的多线程 RLNC 编码性能