我需要检查我的游戏角色可以到达的网格的所有单元格。要做到这一点,我需要从字符位置开始,然后“泛滥”该区域以找到所有可到达的单元格(例如,未被墙壁阻挡的单元格)。
在此图中,玩家为P
,阻挡玩家的墙壁由X
表示。我需要检查玩家所在区域内的所有细胞。
X X X X X X X X
X X X X
X P X X X X
X X X X
X X X X X X X
X X X X X X X X
这样做有什么好的迭代算法吗?目前我正以递归的方式做这件事。
答案 0 :(得分:2)
将初始位置放入队列。
while queue is not empty
remove an entry from the queue
add all reachable neighbours not yet marked to the queue (unless they are already in)
mark position as reachable
end while
答案 1 :(得分:1)
您可以使用BFS。用矩形网格表示区域。网格的每个单元格都是图形中的顶点,当且仅当两个单元格都是非墙壁且单元格相邻时,两个顶点之间才有边缘。