1

だから、これがどこで限界を超えているのかわからないので、皆さんは私にそれを指摘してもらえますか. openNode.indexOf() のそれぞれでエラーが発生します。また、N の値を出力することで、N.getX() または N.getY() が 1 未満にならないことがわかります。

    if(N.getX() > 0)
    {
        flag = false;
        if(!isTilePassable(nodeGrid[N.getX()-1][N.getY()].getX() * 32, nodeGrid[N.getX()-1][N.getY()].getY() * 32)) //west
            closedNode.add(nodeGrid[N.getX()-1][N.getY()]);

        for(Node e : closedNode)
            if(e.equals(openNode.indexOf(nodeGrid[N.getX()-1][N.getY()])))
                flag = true;
        if(!flag)
        {
            openNode.get(openNode.indexOf(nodeGrid[N.getX()-1][N.getY()])).setDistance(SRC);
            openNode.get(openNode.indexOf(nodeGrid[N.getX()-1][N.getY()])).setParent(N);
        }
    }

    if(N.getY() > 0)
    {
        flag = false;
        if(!isTilePassable(nodeGrid[N.getX()][N.getY()-1].getX() * 32, nodeGrid[N.getX()][N.getY()-1].getY() * 32)) //north
            closedNode.add(nodeGrid[N.getX()][N.getY()-1]);

        for(Node e : closedNode)
            if(e.equals(openNode.indexOf(nodeGrid[N.getX()][N.getY()-1])))
                flag = true;
        if(!flag)
        {
            openNode.get(openNode.indexOf(nodeGrid[N.getX()][N.getY()-1])).setDistance(SRC);
            openNode.get(openNode.indexOf(nodeGrid[N.getX()][N.getY()-1])).setParent(N);
        }
    }

これは nodeGrid の初期化と x+y 値の割り当てです Node オブジェクトは x と y のパラメーターを取ります

    for(int i = 0; i < 36; i++)
        for(int ii = 0; ii < 25; ii++)
            nodeGrid[i][ii] = new Node(i,ii);   //initializes node grid
4

3 に答える 3

0

ご協力いただきありがとうございますが、私は愚かな間違いを犯したことに気づきました。indexOf() を使用して nodeGrid を検索し、openNode と変わらない X 値と Y 値を取得していましたが、距離変数が異なっていたため、openNode でその変数が発生しなかったため、常にインデックス位置に -1 が返されました。

于 2013-11-06T13:52:32.510 に答える