3
학교 프로젝트를 위해 Conway 's Game of Life의 JavaScript 버전을 프로그래밍해야하지만 가장자리를 반복해야합니다. 모든 것은 잘 작동하지만 정의되지 않은 배열 외부의 값을 평가해야하기 때문에 이웃 수를 계산하는 함수는 가장자리에있는 셀에서 작동하지 않습니다. 우리는 몇 가지 옵션을 시도했지만 프로그램의 나머지 기능을 모두 변경합니다.Stuck programming JS의 Conway 's "Game of Life"
그리드 가장자리에서 작동하려면 무엇을 추가해야합니까?
var totalNeighbors = function(x, y) {
var total = 0;
if (x > 0 && cells[(x - 1)][y] == 1) {
total++;
}
if (x < (width - 1) && cells[x + 1][y] == 1) {
total++;
}
if (y > 0 && cells[x][y - 1] == 1) {
total++;
}
if (y < (height - 1) && cells[x][y + 1] == 1) {
total++;
}
if (y > 0 && x > 0 && cells[x - 1][y - 1] == 1) {
total++;
}
if (y > 0 && x < (width - 1) && cells[x + 1][y - 1] == 1) {
total++;
}
if (y < (height - 1) && x > 0 && cells[x - 1][y + 1] == 1) {
total++;
}
if (y < (height - 1) && x < (width - 1) && cells[x + 1][y + 1] == 1) {
total++;
}
return total;
};
감사합니다!
가장자리가 블록인지 확인하십시오. 그렇다면 접근 할 수없는 것들에 접근하려고 시도하지 마십시오. 나는 모든'if'가 리팩토링 될 수 있다고 생각합니다. 그렇게하면 포인트 1을 쉽게 적용 할 수 있습니다. (가장자리 접근을 제로까지 순환시켜야한다면, 모듈러스 '%'는 당신의 친구입니다.) –
"가장자리의 블록"이란 무엇을 의미합니까? 'if's를 리팩토링하는 방법에 대한 제안? 우리는 그것을 시험해 보았다. 그리고 그것은 심지어 더 오랫동안 haha로 밝혀졌다. – Dat8StringGuy
"가장자리에있는 블록"이란 말은 하나 이상의면에 셀이없는 셀입니다 (즉, 셀 위나 아래에 셀이 없음). 식료품 점에 가서 리팩토링 할 때 다시 손을 잡을 수 있습니다. (더 길어진 해결책 * line *으로 끝날 수도 있지만, 더 깨끗한 솔루션이어야합니다.) –