В настоящее время я начинаю изучать Java и пытался воссоздать игру жизни Конвея. Мой код работает, когда клетки умирают и рождаются, но, похоже, они не следуют намеченным правилам. Я использую следующие 2 метода для применения правил:
public boolean nextState( int row, int col )
{
if(a[row][col]==false) //dead cells
{
int neighbors=0;
for(int r=row-1; r<=row+1; r++)
{
for(int c=col-1; c<=col+1; c++)
{
if(r>=0 && c>=0 && r<a.length && c<a[0].length) //exclude edges
{
if(a[r][c])
{
neighbors++;
}
}
}
}
if(neighbors==3)
{
return true;
}
else
{
return false;
}
}
else //alive cells
{
int neighbors=-1;
for(int r=row-1; r<=row+1; r++)
{
for(int c=col-1; c<=col+1; c++)
{
if(r>=0 && c>=0 && r<a.length && c<a[0].length) //exclude edges
{
if(a[r][c])
{
neighbors++;
}
}
}
}
if(neighbors==3 || neighbors==2)
{
return true;
}
else
{
return false;
}
}
}
public void nextGeneration()
{
for(int r=0; r<a.length; r++)
{
for(int c=0; c<a[0].length; c++)
{
a[r][c]=nextState(r,c);
}
}
}
nextState возвращает, является ли ячейка [row] [col] мертвой или живой в следующем поколении, в зависимости от ее текущего состояния и количества живых соседей.
nextGeneration применяет nextState ко всем ячейкам.
Я изо всех сил пытаюсь понять, почему состояние определенных ячеек меняется, но не так, как задумано.