iphone - 由 json 文件 iphone 制作的单层的 A* 寻路算法

标签 iphone ios algorithm path-finding

我正在尝试实现 A* 寻路算法。我是 iPhone 开发新手,尤其是游戏方面的新手。想问一下,我有一个从 json 文件中读取的平铺 map 数组 m。在 NSArray 中获取平铺 map 的所有值。现在我想在上面实现 A* 寻路算法。我是否必须自己创建输入为 NSArray 的 A* 寻路算法,或者我们是否也有它的任何教程。我试过互联网,但得到了涉及 tmx 文件的教程。谁能给我发一些不错的教程或示例代码,或者至少指导我正确的方向。你们真的很好。谢谢。

最佳答案

A* 是一种算法,其核心是应用于图形。在您的例子中,图表上的每个节点都对应于 map 中的一个图 block 。

图中的每条边都对应于两个图 block 之间的一个邻接

实现 A* 并不难,但对您的使用来说可能有点过分了。您需要担心使用优先级队列、支持启发式等。

在你的例子中,一个简单的 breadth-first-search只要边缘上没有重量,就可以解决问题。

粗略的算法草图:

ShortestPath(start, goal):
    let queue = new Queue
    queue.Enqueue(start)
    while (queue is not empty):
        let node = queue.Dequeue()
        if (node == goal) 
            break;
        else
            for each adjacent node, aNode:
                // only add unvisited nodes
                if (aNode.previous == null)
                    aNode.previous = node
                    queue.Enqueue(previous)

    if (node != goal) return failure // we never found the goal, so there's no path

    // trace back your path into a list structure        
    let path = new List

    while (node != null):
        path.Add(node)
        node = node.previous

    // it's in a backwards order, so reverse it
    return path.Reverse()

关于iphone - 由 json 文件 iphone 制作的单层的 A* 寻路算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9509936/

相关文章:

iphone - 在第二个 View 上更改字符串变量会出错

c++ - 来自高方差区域 OpenCV 的文本边界框

java - 层序树遍历

algorithm - 路径创建的封闭区域数

ios - 如何在 swift 3.0 中拖动和缩放 UIView 内的 UIImageView ?

iphone - 有没有 API 可以在两个 iphone/ipod Touch/ipad 之间共享数据? (游戏套件除外)

iphone - OpenGL : Clipping textures and its performance

iphone - 在iPhone上创建 "chat bubble",如Tweetie

mongodb - Top-K排序算法在MongoDB中是如何工作的

来自模型的 iPhone 演示 - 无数据连接