程序世界一代

时间:2012-03-26 02:49:33

标签: java random

我在x乘y的部分生成我的世界(随机,无限和2d),当我到达x的末尾时,形成一个新的部分。如果在第一节我有山丘,我怎么能这样做,以便在第二节这些山丘将继续?是否有某种方法可以实现这一目标?

所以它看起来像这样

1221

1 =产生土地

2 =非生成的土地将填写两个

我现在知道了:

enter image description here

enter image description here

有没有办法让这种流程更好?

3 个答案:

答案 0 :(得分:2)

如果我理解你的问题,这是一个解决方案:

如果您生成了山丘之间的差异(差异)并且限制为固定值(因此更改永远不会太大),那么您可以在生成新的山峰时继承前一部分中最后一个山丘的值将第一个随机发生的三角洲(新部分)应用于遗留的山丘尺寸。

答案 1 :(得分:2)

这似乎只是一个算法问题。您的生成机制需要一个起点。在初始调用时,它会说是0,在后续调用中它将是前一个“块”的结束位置。

如果我这样做的话,我可能会使用某种分布来使下一个点的高度加上前一个减去0-3的高度 - 例如10%的时间是+ / 1 3,25%的时间是+/- 2,25%的时间是0和40%的时间是+/- 1。

答案 2 :(得分:1)

如果你按顺序生成这些“丘陵”,我会创建一个访问器方法,为所述山的延续提供一个值来开始下一部分。在一个区域中绘制一个小山时,您似乎正在创建一个随机高度,以便山丘受到某些值的约束。使用这种新的访问器方法扩展该功能。

我对此可能实施的看法。

public class DrawHillSection {
    private int index;
    private int x[50];
    public void drawHillSection() {
        for( int i = 0; i < 50; i++) {
            if (i == 0) {
                getPreviousHillSectionHeight(index - 1)
            }
            else {
                ...
                // Your current implementation to create random
                //   height with some delta-y limit.
                ...
            }
        }
    }

    public void getPreviousHillSectionHeight(int index)
    {
        return (x[49].height);
    }
}