public void destacarCaminho(int caminhoIndice, DataGridView dgvLabirinto)                   // função para destacar um caminho específico
        {
            PilhaLista <Position> caminho = (PilhaLista <Position>)caminhos[caminhoIndice].Clone(); // clona o caminho específico

            while (!caminho.EstaVazia)                                                              // enquanto a pilha não estiver vazia
            {
                Position p           = caminho.Desempilhar().Clone();                               // pega a última posição da pilha
                int[]    coordenadas = p.getPosition();                                             // vetor de string com as coordenadas da posição
                dgvLabirinto[coordenadas[0], coordenadas[1]].Style.BackColor = Color.Green;         // muda a cor de fundo da célula
            }
        }
 public void mostrarCaminhos(DataGridView dgvCaminho)  // função para mostrar os caminhos no DataGridView da direita
 {
     //dgvCaminho.RowCount = 10;
     dgvCaminho.ColumnCount = 300;
     string[] caminhosEncontrados;
     foreach (PilhaLista <Position> caminho in caminhos)                              // para cada pilha de caminho na lista de caminhos
     {
         PilhaLista <Position> caminhoClone = (PilhaLista <Position>)caminho.Clone(); // cria um clone do caminho
         caminhosEncontrados = new string[caminhoClone.Tamanho];
         int cont = 0;
         while (!caminhoClone.EstaVazia)              // enquanto a pilha do caminho não estiver vazia
         {
             Position p = caminhoClone.Desempilhar(); // pega o último caminho da pilha
             caminhosEncontrados[cont] = "Foi para (" + p.getPosition()[0] + ", " + p.getPosition()[1] + ")";
             cont++;
         }
         dgvCaminho.Rows.Add(caminhosEncontrados); // adiciona o vetor de string com caminho para o DatGridView da direita
     }
     dgvCaminho.Refresh();                         // atualiza o DatGridView da direita
     //MessageBox.Show("Caminhos listados.");
 }
 public void Back_Way()  // função para voltar uma posição
 {
     matriz[CordenadasDaPosicao[1], CordenadasDaPosicao[0]] = ' ';
     last_direction   = Posicaocao_atual.getDirection() + 1; // atribui o valor para a última direção
     Posicaocao_atual = caminho.Desempilhar();               // atrui como posição o último valor da pilha
 }