需要使用数组列表中的点绘制路径
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.
我开发了一个 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.