c++ - 集群地形图通过 map /矩阵与河流不相交?

标签 c++ algorithm game-engine game-physics

我有一个简单的矩阵(矩阵,代表 2d 游戏中的地形图,包含 ASCII 字符,例如“m”代表山,“v”代表山谷,“r”代表河流)并且在 map 上可能有一条河流或没有河流.河流可以从矩阵的任何位置流向任何位置(并且总是在两个不同的部分上分开 map => map 上不可能有河流来源,总是在一端进入并存在于另一端)。如果存在河流,如何在两个集群上分离矩阵/地形图?

示例地形

v v v v v v v v r v v v v v 
v v v v v m m m r m m m m m
v v v v v m m r r m m m m m
m m v m m m m r r m m m v v 
v v v v v v r r v v v v v v

这里我应该得到不是河流的坐标的左簇和右簇。

最佳答案

您应该尝试查找 Fill 算法。 http://en.wikipedia.org/wiki/Flood_fill

基本上你想选择一个不在河流中的点,启动洪水填充算法,它会给你一组连接到起点的点。这样一来,您现在就有了一个零件,从现在开始找到那个零件就非常容易了。

关于c++ - 集群地形图通过 map /矩阵与河流不相交?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15526420/

相关文章:

c++ - const 参数传递 : invalid conversion

c++ - 哪些 C++ 编译器会自动定义 size_t 而无需包含 header ?

c# - 检查二维数组中相连邻居的算法

java - 为什么 HashMap resize 在碰撞或最坏情况下

algorithm - 如何用单个分支平衡树?

c# - 独特组合的纸牌游戏算法

python - 如何填充图像边缘内的白色背景以去除背景?

c++ - 添加未使用的内存时性能下降

ios - iOS 中基于 map 的游戏的最佳 2D/3D 游戏引擎

c++ - SDL2 多个渲染器?