swing Java JFrame互动程序
我目前正在尝试使用钻石和正方形算法制作一个分形地形生成器。我已经完成了算法(我想),但我不知道如何很好地使用JFrames
我怎样才能让它显示瓷砖呢
package fractal.terrain;
import java.util.Random;
public class Main {
public int mapSize = 257;
public static void main(String[] args) {
Main m = new Main();
double tileData[][] = new double[m.mapSize][m.mapSize];
Random r = new Random();
final double seed = r.nextInt(10000 - 500 + 1);
System.out.println("The seed is " + seed);
tileData[0][0] = tileData[0][m.mapSize - 1] = tileData[m.mapSize - 1][0]
= tileData[m.mapSize - 1][m.mapSize - 1] = seed;
double h = 10000.0;
for (int sideLength = m.mapSize - 1; sideLength >= 2; sideLength /= 2) {
int halfSide = sideLength / 2;
for (int x = 0; x < m.mapSize - 1; x += sideLength) {
for (int y = 0; y < m.mapSize - 1; y += sideLength) {
double avg = tileData[x][y]
+ tileData[x + sideLength][y]
+ tileData[x][y + sideLength]
+ tileData[x + sideLength][y + sideLength];
avg /= 4.0;
tileData[x + halfSide][y + halfSide] = avg + (r.nextDouble() * 2 * h) - h;
}
}
for (int x = 0; x < m.mapSize - 1; x += halfSide) {
for (int y = (x + halfSide) % sideLength; y < m.mapSize - 1; y += sideLength) {
double avg = tileData[(x - halfSide + m.mapSize) % m.mapSize][y]
+ tileData[(x + halfSide) % m.mapSize][y]
+ tileData[x][(y + halfSide) % m.mapSize]
+ tileData[x][(y - halfSide + m.mapSize) % m.mapSize];
avg /= 4.0;
avg = avg + (r.nextDouble() * 2 * h) - h;
tileData[x][y] = avg;
if (x == 0) {
tileData[m.mapSize - 1][y] = avg;
}
if (y == 0) {
tileData[x][m.mapSize - 1] = avg;
}
}
}
}
}
}
共 (0) 个答案