我在我的应用中寻找错误,它看起来就在这里:
for (int y=0; y<MAP_HEIGHT; y+=10) {
for (int x=0; x<MAP_WIDTH; x+=10) {
Label:
for (GameResource res : resources) {
//Checks if some object is already at given point
if (res.getArea().contains(new Point2D.Float(x, y))) {
continue Label;
}
}
if ((int)(Math.random()*200) == 0) {
resources.add(new GameTree(x, y));
}
if ((int)(Math.random()*400) == 0) {
resources.add(new GameMine(x, y));
}
}
}
它创建地图。我查了一下,看起来即使某个对象在给定的点上,尽管存在资源。我是否正确使用过标签?如果使用了point,我想在x-for循环中转到下一个iteraton。
答案 0 :(得分:1)
如果你想进入x循环的下一次迭代,你的标签应该在x循环上:
Label: for (int x = 0; x < MAP_WIDTH; x += 10)
答案 1 :(得分:1)
你也可以不带任何标签:
for (int y=0; y<MAP_HEIGHT; y+=10) {
for (int x=0; x<MAP_WIDTH; x+=10) {
if (noResourcesAtPoint(resources, x, y))
{
if ((int)(Math.random()*200) == 0) {
resources.add(new GameTree(x, y));
}
if ((int)(Math.random()*400) == 0) {
resources.add(new GameMine(x, y));
}
}
}
}
private boolean noResourcesAtPoint(GameResources resources, int x, int y)
{
for (GameResource res : resources)
{
if (res.getArea().contains(new Point2D.Float(x,y)))
{
return false;
}
}
return true;
}