需要使用arraylist中的点绘制路径

时间:2015-03-09 22:22:02

标签: java android arraylist traveling-salesman

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

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();
}

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

1 个答案:

答案 0 :(得分:1)

我认为您的错误位于for循环的第二行。变量d永远不会递增,所以你总是使用0和1点。就个人而言,我会摆脱d变量并只使用i这样:

c = test.get(i+1);

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

c = test.get(++d);

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