Bien, tenemos esto:
- ---012 
- ------ 
- 0--000 
- 1--010 
- 2--000 
Por tanto, array[1][1] es el elemento "base".
ahora, un bucle:
- int x = ...  // X de la base (array[X][Y]) 
- int y = ...  // Y de la base (array[X][Y]) 
- for(int i=-1;i<2;i++) 
-     for(int j=-1;j<2;j++) 
-         if(!(i==0 && j==0))  //Obviamente, el elemento base va a ser diferente de cero. Lo omitimos. 
-             if(array[i+x][j+y]!=0) return 0;  // Se ha dado que un elemento no era 0. Retornamos false (suponiendo que sea una función) 
- return 1;  //Al acabar, si no ha retornado aún, significa que los elementos eran 0. 
-   
Bueno, ese sería el algoritmo básico. Luego tú tendrías que comprobar que no estea en un lado del array. Recuerda que si está a un lado de el array,  "array[i+x][j+y]" va a dar elementos negativos o por encima del tamaño.
Saludos 
