我在Android中创造了Conway的生命游戏。我有我认为是一个工作引擎,我有一个工作初始网格视图,我可以绘制和填充初始数组上的点。但是,当我尝试将初始数组传递到我的游戏引擎时,我得到一个零点异常。我试图传递初始数组的代码如下:
case R.id.test_item:
{
Toast.makeText(getApplicationContext(),R.string.generation_string,
Toast.LENGTH_LONG).show();
myGridView.setStart(true);
char[][] testGen = myGridView.getWorld();
System.out.println("test1");
char[][] nextGen = lifeEngine.generateNextGeneration(testGen);
myGridView.setWorld(nextGen);
myGridView.invalidate();
}
public char[][] generateNextGeneration(char[][] world) {
System.out.println("test1");
//char[][] currentGeneration = world;
int neighbors;
System.out.println("test1");
char[][] nextGeneration = new char[height][width];
System.out.println("test1");
for (int c = 0; c < (height-1)/UpdateGridActivity.cell_size; c++) {
for (int r = 0; r < (width-1)/UpdateGridActivity.cell_size; r++) {
System.out.println("test1");
neighbors = checker.Check(world,c,r);
System.out.println("test1");
if(world[c][r] != 0) //handles live cells
{
//neighbors = checker.Check(world,c,r);
if (neighbors !=3 && neighbors !=2)
nextGeneration[c][r] = 0;
else
nextGeneration[c][r] = '*';
}
else //handles dead cells
{
//neighbors = checker.Check(world,c,r);
if(neighbors == 3)
nextGeneration[c][r] = '*';
else
nextGeneration[c][r] = 0;
}
}
}
return nextGeneration;
}
}
第一个&#34; test1&#34;出现在我的日志中,但应用程序崩溃并且在下一个&#34; test1&#34;之前抛出空指针异常。打印出generateNextGeneration的顶部。此时我无法弄清楚异常的来源,因为我不确定标头会如何抛出它。
如果您想引用它,我的整个源代码可以在以下位置找到:https://umbc.box.com/s/m7elds5u7120tysiwplzma3t4lgef69w