2013-10-01 4 views
0

По какой-то причине блоки продолжают отображаться в том же положении. Кто-нибудь может мне помочь?Проблемы с генератором 2d-рельефа в Java

Block[][] chunk = new Block[Chunk.CHUNK_WIDTH_BLOCKS][Chunk.CHUNK_HEIGHT_BLOCKS]; 
    float[][] positions = new float[Chunk.CHUNK_WIDTH_BLOCKS][Chunk.CHUNK_HEIGHT_BLOCKS]; 
    float frequency = 1.0f/(float) chunk.length; 

    for (int x = 0; x < chunk.length - 1; x++) 
    { 
     for (int y = 0; y < chunk[x].length - 1; y++) 
     { 
      positions[x][y] = SimplexNoise.Generate((float) x * frequency, (float) y * frequency); 
      g.drawRect(positions[x][0], positions[0][y], Block.BLOCK_WIDTH, Block.BLOCK_HEIGHT); 
     } 
    } 

    for (int x = 0; x < Chunk.CHUNK_WIDTH_BLOCKS; x++) 
    { 
     for (int y = 0; y < Chunk.CHUNK_HEIGHT_BLOCKS; y++) 
     { 
      if (positions[x][y] < 0f) 
       chunk[x][y] = new Block(); 
      if (positions[x][y] >= -0f) 
       chunk[x][y] = new Block(); 
     } 
} 

ответ

1

У вас есть несколько проблем с кодом. Например:

for (int x = 0; x < chunk.length - 1; x++) 

Это должно быть:

for (int x = 0; x < chunk.length; x++) 

Кроме того, необходимо учитывать следующее:

g.drawRect(positions[x][0], positions[0][y], Block.BLOCK_WIDTH, Block.BLOCK_HEIGHT); 

Это не будет использовать все значения в "позиции [х] [у]" .... Я думаю, что вы хотите, чтобы массив был 3d ... например:

float[][][] positions = new float[Chunk.CHUNK_WIDTH_BLOCKS][Chunk.CHUNK_HEIGHT_BLOCKS][2]; 

Таким образом: posistions [х] [у] [0] это значение х, и позиции [х] [у] [1] это значение у ....

g.drawRect(positions[x][y][0], positions[x][y][1], Block.BLOCK_WIDTH, Block.BLOCK_HEIGHT); 

Я не уверен, что я точно понимаю ваш код, но у него, похоже, есть проблемы.