estou com problemas ao tentar implementar a recursividade em um jogo de campo minado...qdo o usuario clica numa celula ( botao ), em que naum ha minas vizinhas, que é o passo recursivo, o programa tem uma exceção e não completa a tarefa de forma apropriada....
o metodo eh o neightborCount
por favor se alguem puder me ajudar eu agradeço...
flw
/**
*@param posRow and posColumn of cell selected, for search by neighboring mines
*/
private void neightborCount ( int posRow, int posColumn )
{
int
aux2 = posColumn + 2,
aux1 = posRow + 2;
for ( int row = posRow - 1; row < aux1; row++)
{
for ( int column = posColumn - 1; column < aux2; column++ )// "for" 3 e 4 para percorrer as oito posições vizinhas a cada elemento
{
if ( row >= 0 && column >= 0 )// impede de acessar uma posição invalida
{
if ( row < cells.length && column < cells [ row ].length )// impede de acessar uma posição invalida
{
if ( row != posRow || column != posColumn )//impede de contar a propria posição
{
if ( cells [ row ][ column ].isMine() )
{
if ( !cells [ posRow ][ posColumn ].isEnabled() )
cells [ posRow ][ posColumn ].incrementMineCount();
}//end of if
}//end of if
}//end of if
}//end of if
}// end of for 2
}// end of for 1
if ( !( cells [ posRow ][ posColumn ].isIsolated() ) )
{
cells [ posRow ][ posColumn ].setText( Integer.toString ( cells [ posRow ][ posColumn ].getNMines() ) );
//cells [ posRow ][ posColumn ].setBackground ( new Color ( 0, 0, 255) );
return;
}//end of if
/*
when current cell is isolated: recursive call
*/
else
{
cells [ posRow ][ posColumn ].setText( Integer.toString ( cells [ posRow ][ posColumn ].getNMines() ) );
aux2 = posColumn + 2;
aux1 = posRow + 2;
for ( int row = posRow - 1; row < aux1; row++ )
{
for ( int column = posColumn - 1; column < aux2; column++ )
{
if ( row >= 0 && column >= 0 )
{
if ( row < cells.length && column < cells [ row ].length )
{
if ( row != posRow || column != posColumn )
{
cells [ row ][ column ].setEnabled( false );
//cells [ posRow ][ posColumn ].setText( Integer.toString ( cells [ posRow ][ posColumn ].getNMines() ) );
cells [ posRow ][ posColumn ].setBackground ( new Color ( 0, 255, 0) );
neightborCount ( row, column );
}//end of if
}//end of if
}//end of if
}//end of for
}//end of for
}//end of else
}// end of method neightborCount