字典字符串等效问题



我正在尝试在Swift中编码A* PATHFIND。

在这一点上,我正在遇到一个问题,可以检索我的封闭列表的G-Costs。

这个问题是,当我尝试搜索字典中的条目时,即使我相信我要输入正确的钥匙,也会返回一个零。

这是相关代码(注意:字典是字符串:int格式,因为它不需要cgpoints(。

print("(closedList["(currentPos)"])")
print("(currentPosString)")
print("(closedList)")
GCost = GCost + (Int)(closedList["(currentPosString)"]!)

CurrentPosString是一个字符串,CurrentPOS是CGPOINT(我曾尝试过(。

这是从此代码中读取的(我省略了很多代码(。

nil

4,4

[" 4.0,4.0":0]

(最后一行返回由于零零引起的错误(。

我的问题是如何使"封闭列表[CurrentPosString]"具有正确访问条目的正确格式并返回0?

代码生成封闭的密码:

closedList["(currentBest)"] = openList["(currentBest)"]
        openList["(currentBest)"] = nil
        openListOrder["(currentBest)"] = nil
        for i in 0 ..< mapTerrain.numberOfColumns{
            for j in 0 ..< mapTerrain.numberOfRows{
                if currentBest == "(i), (j)"{
                    currentPos = CGPoint(x: i, y: j)
                    currentPosString = "(i), (j)"
                    closedList["(currentPos)"] = closedList[currentBest!]
                    print("(closedList["(currentPos)"])")
                    print("a") //not printing for some reason
                    foundNextNewPos = true
                }
                if foundNextNewPos == true{
                    break
                }
            }
            if foundNextNewPos == true{
                break
            }
        }

尝试使用此代码进行了重建,它仍然破裂:

currentPosString = currentBest!
currentBest = nil

生成电流:

    for key in openList.keys{
            let tester = openList["(key)"] //find way to not get a nil later
            //print("(openList["(currentBest)"]!)") //gives nil
            if key == "(endPoint)"{
                currentBest = key
                foundEnd = true
                break
            }else if openList["(currentBest)"] == nil{
                currentBest = key
            }else if tester! < openList["(currentBest)"]!{
                currentBest = key
            } else if tester == openList["(currentBest)"]{
                if openListOrder["(key)"]! > openListOrder["(currentBest)"]!{
                    currentBest = key
                }
            }
        }

问题是没有条目" 4,4",条目" 4.0,4.0"来自较早的代码行,该行依赖于cgfloats制作键,编辑此信息使用相同格式(" int,int"(使其正常工作。

if hexCounter < 3 && openList["(currentPos.x), (currentPos.y)"] == nil{
            closedList["(currentPos.x), (currentPos.y)"] = 0
        }

to

if hexCounter < 3 && openList["(currentPosString)"] == nil{
            closedList["(currentPosString)"] = 0
        }

相关内容

  • 没有找到相关文章

最新更新