有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案