은 내가 미친 회전하고 있는지 확실하지 않습니다 그러나 이것은 내 문제가 무엇인지입니다 : 내가 생명의 게임을 programm에 얼마나 많은 주변 필드를 세는 "countalive"방법이게임, 방법 나던 작업
살아있다.
public int countalive(Board board, int yaxis, int xaxis) { //defekt
int living = board.getfields()[yaxis - 1][xaxis - 1] + board.getfields()[yaxis - 1][xaxis] + board.getfields()[yaxis - 1][xaxis + 1] +
board.getfields()[yaxis][xaxis - 1] + board.getfields()[yaxis][xaxis + 1] + board.getfields()[yaxis + 1][xaxis - 1] +
board.getfields()[yaxis + 1][xaxis] + board.getfields()[yaxis + 1][xaxis + 1];
return living;
}
이 방법은 완벽하게 정상적으로 작동하는 것 같습니다. 내가이
public Board evolve(Board board) {
Board tmpboard = board;
System.out.println(countalive(board, 1, 3)); //I test with this. SHOULD AND IS 2!!
int aliveneighbours = 0;
for (int i = 1; i < board.getfields().length - 1; i++) {
for (int j = 1; j < board.getfields()[i].length - 1; j++) {
System.out.print("i = " +i);
System.out.print("j = " +j +" ");
aliveneighbours = countalive(board, i, j);
System.out.println(aliveneighbours);
if (aliveneighbours == 3) {
tmpboard.getfields()[i][j] = 1;
} else if (aliveneighbours < 2 || aliveneighbours > 3) {
tmpboard.getfields()[i][j] = 0;
}
}
System.out.println("");
}
return tmpboard;
}
을 할 때 나는 콘솔이 얻을 : 전 = 1, J = 3이 아니라 1이어야한다
2
i = 1j = 1 1
i = 1j = 2 1
i = 1j = 3 1
i = 1j = 4 1
i = 1j = 5 0
...
비록 당신이합니다 (메소드 countalive를 참조로 board, 1, 3)은 작동하지만 for 루프에서는 다른 결과를 얻는다. 내 오류를 찾을 수 있습니까?
테스트 보드의 상태를 확인해야 할 수도 있습니다. 그러나 이상하게 여겨지는'(Y, X)'에 접근 할 필요가 있음을 언급 할 가치가 있습니다. (컨벤션은'(X, Y)'입니까?) –
이 줄은'Board tmpboard = board; * 현재 게시판? 어떻게 든'tmpboard == board'라고하면 결과가 * 설명 될 수도 있습니다. 즉,'tmpboard '를 변경하여 보드를 변경하고있는 것입니다. 자바의 규칙이 분명하지 않다면 (내가 아닌),'tmpboard'에서 무엇인가를 변경하고'board' 자체를 검사함으로써 테스트 할 수 있습니다. – usr2564301
@Jongware Yes board tmpboard = board에서 나에게 복사본을 제공합니다. 매 반복마다 게시판과 tmpboard를 인쇄 했으므로 옳은 것 같습니다. 또한 보드가 바뀌지 않아도된다. – Peter111