-1

我目前正在为我正在开发的一个小游戏制作一个简单的 2D 世界生成器。问题是我从随机得到的值都是一样的。另外,我不希望生成器创建两个方块高的方块,因为那样玩家就无法通过。这是我的代码:

private void generateWorld() {
    Random r = new Random(Sys.getTime() / System.currentTimeMillis() * System.nanoTime());
    int bh = r. nextInt(1) + 1;
    for(int x = 0; x < width; x+=32) {

        theWorld.addBlock(new Block(BlockType.Grass, x, bh * 32));
        //r = new Random(Sys.getTime() / System.currentTimeMillis() * System.nanoTime());
        bh = r.nextInt(1) + 1;
        System.out.println(bh);
    }
}

编辑:r.nextInt(2);还创建了一块平坦的土地。EDIT2:修复了它,我很愚蠢,只是在 for 循环之前更改了 r.nextInt() 。忘记里面的那个了!

4

5 回答 5

1

r.nextInt(1)总会回来0的。根据经验,r.nextInt(x)返回范围内的整数0 to x-1

于 2013-03-16T03:09:47.163 回答
0

正如@Blender 指出的那样,问题在于 nextInt(1) 将返回范围 [0, 1) 中的值,该值始终为 0。

增加n您传入的值以创建更大的块。

于 2013-03-16T03:10:10.560 回答
0

nextInt(x)返回一个介于 0 和包括 0 之间的随机整数x-1。所以nextInt(1)返回一个介于 0 和... 0 之间的整数。

试试nextInt(2)吧。

于 2013-03-16T03:10:40.490 回答
0

nextInt(1) - 将始终返回 0,原因是该参数是随机选择的上限。尝试提高参数值。

于 2013-03-16T03:11:36.993 回答
0

nextInt(maxInt)0从to返回一个 int maxInt - 1nextInt(1)用类似的东西替换nextint(100)

于 2013-03-16T03:13:05.027 回答