我开发了一个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();
}
如何在调用方法时获取完整路径??
答案 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。