使用种子生成Java 2D地形

时间:2016-12-06 00:13:34

标签: java lwjgl

我正在尝试在LWJGL中制作2D游戏。我遇到了地形生成的问题。
我目前有一个生成地形的算法,但它总是随机的,我再也无法得到同样的世界我想制作一个基于生成ax和y坐标的算法一个给定的数字。

我现在的世界一代看起来像这样:

     final float STEP_MAX = 1f;
     final float STEP_CHANGE = 1;
     final int HEIGHT_MAX = 100;

     double height = HEIGHT_MAX;
     double slope = STEP_MAX;

     for (int x = -WORLDSIZE; x < WORLDSIZE; x++) {
          height += slope;
          slope += (Math.random() * STEP_CHANGE) * 2 - STEP_CHANGE;

          if (slope > STEP_MAX)  slope = STEP_MAX;
          if (slope < -STEP_MAX) slope = -STEP_MAX;

          if (height > HEIGHT_MAX) { 
              height = HEIGHT_MAX;
              slope *= -1;
          }
          if (height < 0) { 
              height = 0;
              slope *= -1;
          }
          Tile newTile = new Tile(x*25,(int)height*25,25,25,TileType.Grass);
          tiles.add(newTile);

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

如果您自己创建随机数生成器(而不是让Math.random()为您创建),您可以指定种子:

Random random = new Random(yourSeed);
random.nextDouble();

Random类还有许多您可能想要查看的有用方法。

更多信息:https://docs.oracle.com/javase/8/docs/api/java/util/Random.html