C# 给定玩家可以访问哪些位置?
比如说,如果你有一个4乘4的图表,并按照下面的顺序排列 我想完成的是,当我点击其中一个片段时,我想看到该给定片段的所有可用移动,而不需要移动另一个片段。比如说,C# 给定玩家可以访问哪些位置?,c#,algorithm,unity3d,C#,Algorithm,Unity3d,比如说,如果你有一个4乘4的图表,并按照下面的顺序排列 我想完成的是,当我点击其中一个片段时,我想看到该给定片段的所有可用移动,而不需要移动另一个片段。比如说, 以编程方式完成此任务的最佳方法是什么?我在Unity中做这件事,但我最好奇的是看到一个算法来做这件事。DFS是一个简单的算法,可以实现你想要的 它的工作原理如下: DFS(x, y): mark[x, y] = true for i = -1 ... 1: for j = -1 ... 1:
以编程方式完成此任务的最佳方法是什么?我在Unity中做这件事,但我最好奇的是看到一个算法来做这件事。DFS是一个简单的算法,可以实现你想要的 它的工作原理如下:
DFS(x, y):
mark[x, y] = true
for i = -1 ... 1:
for j = -1 ... 1:
if (x + i) < 0 || (x + i) >= columns //outside of matrix
continue
if (y + j) < 0 || (y + j) >= rows //outside of matrix
continue
if mark[x + i, y + j] //already seen
continue
if matrix[y + j, x + i] is empty
print("You can go to position (" + (y + j) + ", " + (x + i) ")");
DFS(x + i, y + j)
它将查找所有可用的插槽并将它们提供给您
您可以通过调用DFScolumn,row和您的初始位置来启动它。听起来像是一个迷宫路由问题,请查看lee算法作为示例。你只是没有目标位置-重复循环,直到你没有地方移动,没有要标记的点。看起来你想要一个DFS。