2013-03-16 2 views
0

저는 현재 작업하고있는 작은 게임을위한 간단한 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() 만 변경했습니다. 그 안의 것을 잊어 버렸습니다!

+1

매번'r.nextInt (1)'이'0'을 리턴하지 않습니까? – Blender

+0

nextInt의 설명서를 읽으셨습니까? –

+0

보다 일반적으로, r.nextInt (n)는 적어도 0 이상 n 미만의 int를 반환합니다. 최소한 0 이상이고 1 미만의 단 하나의 int가 있습니다. 아마도 r.nextInt (2)를 사용해야합니다. –

답변

1

r.nextInt(1)은 항상 0을 반환합니다. 일반적으로 r.nextInt(x)0 to x-1 범위의 정수를 반환합니다. @Blender는 지적

0

문제는, nextInt (1), 1), 어떤은 항상 0

당신이 전달 n의 값을 증가 할 것이다 범위 [0의 값을 반환하는 것입니다 더 큰 블록을 만들 수 있습니다.

0

nextInt(x)은 0과 x-1 사이의 임의의 정수를 반환합니다. 따라서 nextInt(1)은 0과 ... 0 사이의 정수를 반환합니다.

대신 nextInt(2)을 시도하십시오.

0

nextInt (1) - 항상 0을 반환하므로 매개 변수가 무작위 선택에 대한 상한값이됩니다. 매개 변수 값을 높이십시오.

0

nextInt(maxInt)0에서 maxInt - 1까지 int를 반환합니다. nextInt(1)을 다음과 같이 바꾸십시오. nextint(100)

+0

다시 한 번, 플레이어는 통과 할 수 없습니다. – JustinP

+0

@ JustinP : 무엇을 통과할까요? 왜 플레이어는 블록을 통과 할 수 있습니까? – Runemoro

관련 문제