2017-04-18 8 views
1

나는 몇 년 전에 썼던 간단한 MineSweeper 프로그램을 보여 주었고, 다음 코드를 최적화 할 수 있다면 둘다 멋지게 보이지 않기 때문에 서로 얽매여있다.주어진 인덱스 주변의 bool [,]에서 참 값을 계산하는 방법은 무엇입니까?

다음 방법은 인덱스가 범위에서하지 않은 경우 확인 위한 것이며, 요청 된 인덱스의 값을 반환

private static bool IsMineOnCoords(bool[,] field, int posI, int posJ) 
{ 
    if (posI < 0 || posI > field.GetLength(0) - 1 || posJ < 0 || posJ > field.GetLength(1) - 1) return false; 
    return field[posI, posJ]; 
} 

내가 8에서 지정된 인덱스의 주위에 모든 위치를 위해이 메소드를 호출을 if 문 :

int count = 0; 

if (IsMineOnCoords(field, posI + 1, posJ)) count++; 
if (IsMineOnCoords(field, posI - 1, posJ)) count++; 
if (IsMineOnCoords(field, posI + 1, posJ + 1)) count++; 
if (IsMineOnCoords(field, posI + 1, posJ - 1)) count++; 
if (IsMineOnCoords(field, posI - 1, posJ + 1)) count++; 
if (IsMineOnCoords(field, posI - 1, posJ - 1)) count++; 
if (IsMineOnCoords(field, posI, posJ + 1)) count++; 
if (IsMineOnCoords(field, posI, posJ - 1)) count++; 

내가 할 수있는 더 좋은 방법이 있습니까? 이 같은

답변