Conway의 게임 Java 코드에서 작업 중이며 차세대 제작자라고도 불리는 업데이트 방법으로 어려움을 겪고 있습니다. 지금까지 작성한 코드를 게시하고 업데이트 방법을 수정하기 위해 내가 할 수있는 일을 알려주십시오.Conway 's Life of Life 업데이트 (차세대)
시간에 T 1이 없으면이 셀이 태어 났으며 이웃 세 명 중 정확히 세 명이 생존했습니다. 시간 T 1에서 중 두 개 또는 세 개의 이웃
시간에 T 1 미만이 이웃이 있다면 셀은 절연에서 사망이 있다면
기존의 세포는 살아 남아있다.
시간 T 1에 4 개 이상의 이웃이있는 경우 세포가 과밀 상태에서 사망합니다.
public class GameOfLife {
private char [][] grid;
private int rows;
private int columns;
public GameOfLife(int rows, int columns) {
grid=new char[rows][columns];
for(int i=0;i<grid.length;i++)
{
for(int j=0;j<grid[i].length;j++)
grid[i][j]=' ';
}
}
public int numberOfRows() {
int countRows=0;
for(int i=0;i<grid.length;i++){
countRows++;
rows=countRows;
}
return rows;
}
public int numberOfColumns() {
int countColumns=0;
for(int i=0;i<1;i++){
for(int j=0;j<grid[i].length;j++)
countColumns++;
columns=countColumns;
}
return columns;
}
public void growCellAt(int row, int col) {
for(int i=0;i<grid.length;i++){
for(int j=0;j<grid[i].length;j++)
grid[row][col]='O';
}
}
public boolean cellAt(int row, int col) {
for(int i=0;i<grid.length;i++){
for(int j=0;j<grid[i].length;j++)
if(grid[row][col]=='O')
return true;
}
return false;
}
public String toString() {
String result="";
for(int i=0;i<rows;i++){
for(int j=0;j<columns;j++)
result+=grid[i][j];
}
return result;
}
public int neighborCount(int row, int col) {
int count=0;
int i=row;
int j=col;
int left;
int right;
int up;
int down;
if(i > 0)
up = i-1;
else
up = grid.length-1;
if(i < (grid.length-1))
down = i+1;
else
down = 0;
if(j > 0)
left = j-1;
else
left = grid[i].length - 1;
if(j < (grid[i].length-1))
right = j+1;
else
right = 0;
if(grid[up][left] == 'O')
count++;
if(grid[up][j] == 'O')
count++;
if(grid[up][right] == 'O')
count++;
if(grid[i][left] == 'O')
count++;
if(grid[i][right] == 'O')
count++;
if(grid[down][left] == 'O')
count++;
if(grid[down][j] == 'O')
count++;
if(grid[down][right] == 'O')
count++;
return count;
}
public void update() {
for(int i=0;i<grid.length;i++){
for(int j=0;j<grid[i].length;j++){
if(grid[i][j]==' ' && neighborCount(i,j)==3)
grid[i][j]='O';
if(neighborCount(i,j)<2 || neighborCount(i,j)>3)
grid[i][j]= ' ';
if(grid[i][j]=='O' && neighborCount(i,j)==2 || neighborCount(i,j)==3)
grid[i][j]='O';
}
}
}
}
업데이트 방법에서 새 배열을 만드는 것과 관련하여이 모든 작업을 수행해야합니까? 또한 업데이트 방법에 대한 어설 션 테스트를 수행하는 방법은 무엇입니까?
public void update() {
char[][] newGrid = new char[grid.length][grid[0].length];
for(int i=0;i<grid.length;i++){
for(int j=0;j<grid[i].length;j++){
if(grid[i][j]==' ' && neighborCount(i,j)==3)
newGrid[i][j]='O';
if(neighborCount(i,j)<2 || neighborCount(i,j)>3)
newGrid[i][j]= ' ';
if(grid[i][j]=='O' && neighborCount(i,j)==2 || neighborCount(i,j)==3)
newGrid[i][j]='O';
}
}
}
정확히 어떤 문제가 있습니까? – StarPilot