Campo minado (Problema ao expandir botões que não possuem valor)

Ola Pessoal.

Estou fazendo um campo minado e estou tendo problemas ao expandir as posições onde não se encontram bombas por perto.

criei um método que informado o número da posições do botão ele verifica se o valor é zero (zero é vazio no jogo) percorre as oito posições ao redor da posição inicial e abre as mesmas se valor delas for igual a zero ou diferente de -1 (-1 são as minas).
O problema vem agora, pois o método só trata as oito posições ao redor não vai alem, tentei de forma recursiva tratar as outras posições mas sempre dá erro.

public void abreProximos(int a, int b) {

	int li,co = 0;
	
	if (g1.getBomba()[a][b] == 0) {
		
		for ( li = -1; li <= 1 ; li++) {
			for ( co = -1; co <= 1; co++) {
					
				if (g1.getBomba()[a+li][b+co] == 0 || g1.getBomba()[a+li][b+co] != -1) {
				
				abreBotao(a + li, b + co);	
											
			   }		
			}		
		}
	}	
}

Se alguém tiver uma ideia de como resolver agradeço.

É mais fácil fazer recursivamente:

public void abrirCampo(int x, int y) {
  if (jogoTerminou ou x,y está fora do campo) return;
  abrir(x, y); // somente exibe o botão
  if (x,y é bomba) { perdeu(); return; }
  if (não contem campo para abrir) { venceu(); return; }
  if (x,y é campo vazio) {
    abrirCampo(x - 1,y);
    abrirCampo(x - 1,y - 1);
    abrirCampo(x,y - 1);
    abrirCampo(x + 1,y - 1);
    abrirCampo(x + 1,y);
    abrirCampo(x + 1,y + 1);
    abrirCampo(x,y + 1);
    abrirCampo(x - 1,y + 1);
  }
}