Ajuda com metodo recursivo

0 respostas
C

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
(alt+c)
Criado 23 de novembro de 2010
Respostas 0
Participantes 1