使用种子生成Java 2D地形
问题描述:
我想在LWJGL中制作2D游戏。我遇到地形生成问题。
我目前有一个算法来生成地形,但它总是随机的,我再也不能得到同一个世界我想要做一个算法,根据给定的数字生成一个x和y坐标。使用种子生成Java 2D地形
我目前世界生成看起来是这样的:
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);
预先感谢您的帮助。
答
如果您创建随机数生成自己(而不是让的Math.random()为你这样做),你可以指定一个种子:
Random random = new Random(yourSeed);
random.nextDouble();
的Random
类也有可能你许多有用的方法想看看。
更多信息:https://docs.oracle.com/javase/8/docs/api/java/util/Random.html
'Random'需要的种子,这将导致每一次相同的序列。 – teppic
你是什么意思随机采取种子? – Setlock