【发布时间】:2012-02-07 02:24:52
【问题描述】:
我正在尝试Game of Life - 我坚持的是根据它周围的区域来确定一个空间应该是活的还是死的。我已经到了无法判断自己做错了什么的地步——希望另一双眼睛可以提供帮助。
这只是一个 sn-p,完整代码在这里:http://pastebin.com/ucYe653p
public static void updateMatrix(boolean[][] board, int[] birthLive) {
//clone the board so modified values don't affect the results of upcoming spaces
boolean[][] boardCopy = board.clone();
for (int i = 0; i < board.length; i++)
boardCopy[i] = board[i].clone();
int count = 0;
for (int i = 1; i < board.length - 1; i++) {
for (int j = 1; j < board[i].length - 1; j++) {
//different requirements for dead or living pieces' living status
if (board[i][j] == false) {
//check the nine-by-nine square, starting at (-1, 1) and ending at (1, -1) where 0 is the affected location
// * * *
// * 0 *
// * * *
for (int ii = board[i - 1].length; ii < board[i + 1].length; ii++) {
for (int jj = board[j - 1].length; ii < board[j + 1].length; jj++) {
if (boardCopy[i][j] == true)
count++;
}
}
//check to see what high and low amt of required adjacent lifeforms is
if (count >= birthLive[0] && count <= birthLive[1])
board[i][j] = true;
else
board[i][j] = false;
count = 0;
}
else {
for (int ii = board[i - 1].length; ii < board[i + 1].length; ii++) {
for (int jj = board[j - 1].length; ii < board[j + 1].length; jj++) {
if (boardCopy[i][j] == true)
count++;
}
}
count -= 1; //For board[i][j] is always true
if (count >= birthLive[2] && count <= birthLive[3])
board[i][j] = true;
else
board[i][j] = false;
count = 0;
}
}
}
}
【问题讨论】:
-
您能描述一下问题的症状吗?
-
您需要让我们知道出了什么问题。 IE。你期望这段代码做什么,它做了什么。
-
对,对不起。
To calculate whether an entity lives at a given cell for the next iteration, you will need to calculate the number of entities in the neighborhood and compare the count with the birth range (if the cell is empty) or live range (if there was already an entity there). Note that the count must be based on the values as of the previous iteration. This means that you will need to make a copy of the matrix before doing the updates so you can count entities in neighborhoods based on original values.外观:i.imgur.com/C0i4e.png -
您可能会从this code 那里得到一些提示。该线程上的问题似乎与此处的问题相同。
标签: java arrays for-loop conways-game-of-life