我遇到了一个非常令人不安的问题。我正在尝试为我制作的这款小游戏创建一个“chunking”系统。我现在想要做的就是生成无数块污垢块。它现在工作,但我只是使用一个二维数组,它存储的列和污垢的索引。这里是实际的代码:如何创建2D阵列ArrayList
public void generate(){
int newMax = dirtCount + dirtGeneratorChunk;
int oldCount = dirtCount;
for(int i = oldCount;i<newMax;i++){
dirt[dirtCount] = newDirt(spawnDirtX+column*16,
spawnDirtY,16,16,column,columnNumber);
columnNumber ++;
blockGrid[column][columnNumber] = spawnDirtY;
updateBlockGrid(column,(spawnDirtY-spawnDirtTop)/16,spawnDirtY);
dirtX[i] = spawnDirtX+column*16;
dirtY[i] = spawnDirtY;
hasDirt = true;
dirtCount ++;
spawnDirtY += 16;
if(spawnDirtY>500){
column++;
columnNumber = 0;
spawnDirtY = spawnDirtYOriginal;
}
}
repaint();
}
希望这有助于显示我正在尝试做什么。正如我确信你可以通过代码告诉的,我对Java很新,可能会使用不好的做法/效率低下的方法。如果您对如何改进我的编程有任何建议,我很乐意听到他们!回到正题。以下是我迄今为止在该ArrayList:
//Construct a new empty ArrayList for type int[][]
ArrayList<int[][]> chunkHolder = new ArrayList<int[][]>();
//Fill ArrayList (index, int[][])
chunkHolder.add(chunkCount, createBlockGrid());
chunkCount ++;
Object[] chunkArray = chunkHolder.toArray();
System.out.println(chunkArray[0]);
public static int[][] createBlockGrid(){
int[][] blockGrid = new int[64][256];
return blockGrid;
}
当我尝试使用System.out.println(chunkHolder.get(0));
,它返回:[[[email protected]
。显然这不是我想要的......我做错了什么? 谢谢大家的帮助! 〜Guad (如果我没有解释清楚,请告诉我!)
它使用Object的toString()方法进行打印。您可以使用java.util.Arrays包中的Arrays.toString(chunkHolder.get(0))方法,尽管我从未在二维数组上使用它。看看这篇文章:http://stackoverflow.com/questions/409784/simplest-way-to-print-an-array-in-java –
'int [] [] firstChunk = chunkHolder.get(0);'现在您可以像平常一样与'firstChunk'进行交互。尝试'System.out.println(firstChunk [0] [0]);'例如。此外,尝试在初始化后打印'blockGrid',您会看到为什么会得到该表示 - 这正是打印数组的原因。 – 2rs2ts