我有一个城市建设游戏,并且已经完成了玩家的工作,玩家可以手动选择放置东西的位置。我还没有完成人工智能,它应该在其领土的边缘或内部生成一个点(一个区域对象)。
这是我正在研究的方法:
public Point getBuildPoint(){
Random rand = gp.rand;
int x = -1;
int y = -1;
if(currentState == expandState){
//get point on the edge of the territory
}else{
//get point within the territory
}
//snap to grid
x = Math.round((float) x / gp.tileSize)*gp.tileSize;
y = Math.round((float) y / gp.tileSize)*gp.tileSize;
return new Point(x, y);
}
我研究了使用 PathIterator 对象,但没有发现任何有用的东西。
编辑:如何在多边形区域(由矩形组成)的随机线段上选择一个点?
假设我们在点 A(x1,y1) 和 B(x2,y2) 之间有一条 线段。我们试图得到直线上的点 C(x3,y3) 。我们可以有一个 scale 数字,我将其称为“scale”。比例在 0 到 1 之间 0 最接近 A 1 最接近 B。我们可以通过以下等式得到直线上的点:
x3 = x1 + (x2-x1)*比例
y3 = y1 + (y2-y1)*比例