我正在从瓦片集中整理一张地图。作为其中的一部分,我有一个方法,一旦重要部分被绘制出来,就会用随机地形相关的 BufferedImages 填充地图的其余部分。该fillIn
方法采用两个参数 - BufferedImages 的数组列表和整数的 ArrayList。整数的形式为,例如 90,92,94,96,98,100 并表示百分比 - 两个 ArrayList 大小相同,该示例意味着第一个图块有 90% 的机会,即 2%第二个等等(实际上,您会在我的代码中注意到这也不是完美的工作。这不是问题,我知道如何解决它。只是还没有完成。)
地图是一千个方块,填充这张地图的速度慢得令人无法接受。有没有加快速度的提示或技巧?真的,我希望它快得不明显。
考虑到复杂性,SSCE 最终不会很短,但 fillIn 方法的代码如下,如果任何其他部分有用,请告诉我。
private void fillIn (ArrayList<BufferedImage> b, ArrayList <Integer> r){
for (int i=0; i<FULLGRIDSIZE; i++){
for (int j=0; j<FULLGRIDSIZE; j++){
if (mapArray[i][j] ==null){
Random rand = new Random();
int random = rand.nextInt(100);
for (int loopVar =0 ;loopVar<r.size();loopVar++){
System.out.println(random +" "+ loopVar);
if (random < r.get(loopVar)){
mapArray[i][j] = b.get(loopVar);
break;
}
}
}
}
}
}