我正在努力为我正在制作的小型游戏制作一个简单的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);
也创造了一片扁平的土地。
编辑2:修复它,我是愚蠢的,只是在for循环之前更改r.nextInt()。忘了它里面的一个!
答案 0 :(得分:1)
r.nextInt(1)
将始终返回0
。根据经验,r.nextInt(x)
会返回0 to x-1
范围内的整数。
答案 1 :(得分:0)
问题正如@Blender所指出的那样,nextInt(1)将返回[0,1]范围内的值,该值始终为0.
增加传入的n
值以创建更大的块。
答案 2 :(得分:0)
nextInt(x)
返回0到x-1
之间的随机整数。所以nextInt(1)
返回0到... 0之间的整数。
请尝试nextInt(2)
。
答案 3 :(得分:0)
nextInt(1) - 将始终返回0,原因是该参数是随机选择的上限。尝试提高参数值。
答案 4 :(得分:0)
nextInt(maxInt)
会返回0
到maxInt - 1
的int。
将nextInt(1)
替换为nextint(100)