需要使用数组列表中的点绘制路径

Need to draw a path using points in an arraylist

我开发了一个 android 旅行商问题 (TSP) 游戏应用程序,用户在其中创建一条路径并与计算机对战,每次用户使用 TSP 算法来创建一条完整路径单击以用一条线连接两点。目前,只要用户移动,就会调用我绘制计算机路径的方法。但是,我的代码只允许连接计算机路径中的前两个点(存储在名为 'test' 的数组列表中)。

public void CompDrawLine(List<Point> test) {
        int d = 0;
        int i;
        test.add(test.get(0));
        Point c = test.get(d);

        for (i=0;i<test.size();i++)

        {
            cPath.moveTo(c.x,c.y);
            c = test.get(d+1);
            cPath.lineTo(c.x,c.y);
            mCanvas.drawPath(cPath,cPaint);
            // String testIndex = "this is iteration" + i;
             // Toast.makeText(mContext, testIndex, LENGTH_SHORT).show();
        }
         cPath.reset();
}

如何在调用方法时获取绘制的完整路径?

我认为你的错误在 for 循环的第二行。变量 d 永远不会递增,所以你总是使用点 0 和 1。就我个人而言,我会去掉 d 变量并像这样使用 i

c = test.get(i+1);

但是,另一种选择是使用 d 并每次递增:

c = test.get(++d);

它必须是预增量,否则你将从点 0 到点 0,然后从点 1 到点 1,等等,而不是从点 0 到 1,因为 d初始化为0.